From c8175142c18bf9311b4387d4e5d3da1bb1e9efc0 Mon Sep 17 00:00:00 2001 From: peter_rabbit <pierrejarriges@gmail.com> Date: Mon, 25 Jan 2021 14:58:34 +0100 Subject: [PATCH] reorganize articles --- build.js | 2 +- constants.js | 4 +- .../games}/fantom_quest/fantom_quest.json | 1 + .../games}/fantom_quest/fantom_quest.txt | 0 .../games}/fantom_quest/images/lucipix.png | Bin .../games}/fantom_quest/images/pijarpix.png | Bin .../images/screen_fantom_quest_1.jpg | Bin .../images/screen_fantom_quest_2.jpg | Bin .../images/screen_fantom_quest_3.jpg | Bin .../images/screen_fantom_quest_4.jpg | Bin .../images/screen_fantom_quest_5.jpg | Bin .../games}/fantom_quest/lucie_ventadour.txt | 2 +- .../games}/fantom_quest/pijar.txt | 4 +- public/articles/games/index.json | 3 + public/articles/news/index.json | 3 + .../images/atelier_bureau.jpg | Bin .../images/local_entree.jpg | Bin .../installation-kuadrado.json | 0 .../installation-kuadrado.txt | 0 public/articles/software/index.json | 3 + .../images/watergun-overview-light.jpg | Bin .../software}/watergun/watergun.json | 2 +- .../software}/watergun/watergun.txt | 0 public/education/education.js | 4 +- public/game-articles/index.json | 3 - public/games/games.js | 55 +++++++++++++----- public/main.js | 25 +++++--- public/news-articles/index.json | 3 - public/software-articles/index.json | 3 - .../software-development.js | 31 ++++++---- public/style/style.css | 41 +++++++++---- src/home-page-components/news-articles.js | 4 +- src/lib/article-utils.js | 17 +++++- src/pages/games/components/game-article.js | 30 ++++++++-- src/pages/games/components/game-articles.js | 4 +- src/pages/games/games.scss | 38 +++++++----- .../components/software-articles.js | 10 ++-- .../software-development.scss | 8 --- src/style.scss | 3 + src/theme.scss | 14 +++++ 40 files changed, 214 insertions(+), 103 deletions(-) rename public/{game-articles => articles/games}/fantom_quest/fantom_quest.json (97%) rename public/{game-articles => articles/games}/fantom_quest/fantom_quest.txt (100%) rename public/{game-articles => articles/games}/fantom_quest/images/lucipix.png (100%) rename public/{game-articles => articles/games}/fantom_quest/images/pijarpix.png (100%) rename public/{game-articles => articles/games}/fantom_quest/images/screen_fantom_quest_1.jpg (100%) rename public/{game-articles => articles/games}/fantom_quest/images/screen_fantom_quest_2.jpg (100%) rename public/{game-articles => articles/games}/fantom_quest/images/screen_fantom_quest_3.jpg (100%) rename public/{game-articles => articles/games}/fantom_quest/images/screen_fantom_quest_4.jpg (100%) rename public/{game-articles => articles/games}/fantom_quest/images/screen_fantom_quest_5.jpg (100%) rename public/{game-articles => articles/games}/fantom_quest/lucie_ventadour.txt (63%) rename public/{game-articles => articles/games}/fantom_quest/pijar.txt (55%) create mode 100755 public/articles/games/index.json create mode 100755 public/articles/news/index.json rename public/{news-articles => articles/news}/installation-kuadrado/images/atelier_bureau.jpg (100%) rename public/{news-articles => articles/news}/installation-kuadrado/images/local_entree.jpg (100%) rename public/{news-articles => articles/news}/installation-kuadrado/installation-kuadrado.json (100%) rename public/{news-articles => articles/news}/installation-kuadrado/installation-kuadrado.txt (100%) create mode 100755 public/articles/software/index.json rename public/{software-articles => articles/software}/watergun/images/watergun-overview-light.jpg (100%) rename public/{software-articles => articles/software}/watergun/watergun.json (92%) rename public/{software-articles => articles/software}/watergun/watergun.txt (100%) delete mode 100755 public/game-articles/index.json delete mode 100755 public/news-articles/index.json delete mode 100755 public/software-articles/index.json diff --git a/build.js b/build.js index 616d21b..2d55391 100644 --- a/build.js +++ b/build.js @@ -3,7 +3,7 @@ "use strict"; const build_conf = { - protected_dirs: ["assets", "style", "news-articles", "game-articles", "software-articles"], + protected_dirs: ["assets", "style", "news-articles", "game-articles", "software-articles", "articles"], }; const fs = require("fs"); diff --git a/constants.js b/constants.js index f8bd769..6d0ce28 100644 --- a/constants.js +++ b/constants.js @@ -2,7 +2,5 @@ const { server_url } = require("./config"); module.exports = { images_url: `${server_url}assets/images`, - news_articles_url: `${server_url}news-articles`, - game_articles_url: `${server_url}game-articles`, - software_articles_url: `${server_url}software-articles`, + articles_url: `${server_url}articles/`, }; diff --git a/public/game-articles/fantom_quest/fantom_quest.json b/public/articles/games/fantom_quest/fantom_quest.json similarity index 97% rename from public/game-articles/fantom_quest/fantom_quest.json rename to public/articles/games/fantom_quest/fantom_quest.json index 62c6e4a..6aeadaa 100755 --- a/public/game-articles/fantom_quest/fantom_quest.json +++ b/public/articles/games/fantom_quest/fantom_quest.json @@ -2,6 +2,7 @@ "title": "Fantom Quest", "subtitle": "Le labyrinthe de la quête d'identité", "tags": ["jeu web", "pixelart", "javascript", "labyrinthe"], + "status": "wip", "body": "<file>fantom_quest.txt", "images": [ "screen_fantom_quest_1.jpg", diff --git a/public/game-articles/fantom_quest/fantom_quest.txt b/public/articles/games/fantom_quest/fantom_quest.txt similarity index 100% rename from public/game-articles/fantom_quest/fantom_quest.txt rename to public/articles/games/fantom_quest/fantom_quest.txt diff --git a/public/game-articles/fantom_quest/images/lucipix.png b/public/articles/games/fantom_quest/images/lucipix.png similarity index 100% rename from public/game-articles/fantom_quest/images/lucipix.png rename to public/articles/games/fantom_quest/images/lucipix.png diff --git a/public/game-articles/fantom_quest/images/pijarpix.png b/public/articles/games/fantom_quest/images/pijarpix.png similarity index 100% rename from public/game-articles/fantom_quest/images/pijarpix.png rename to public/articles/games/fantom_quest/images/pijarpix.png diff --git a/public/game-articles/fantom_quest/images/screen_fantom_quest_1.jpg b/public/articles/games/fantom_quest/images/screen_fantom_quest_1.jpg similarity index 100% rename from public/game-articles/fantom_quest/images/screen_fantom_quest_1.jpg rename to public/articles/games/fantom_quest/images/screen_fantom_quest_1.jpg diff --git a/public/game-articles/fantom_quest/images/screen_fantom_quest_2.jpg b/public/articles/games/fantom_quest/images/screen_fantom_quest_2.jpg similarity index 100% rename from public/game-articles/fantom_quest/images/screen_fantom_quest_2.jpg rename to public/articles/games/fantom_quest/images/screen_fantom_quest_2.jpg diff --git a/public/game-articles/fantom_quest/images/screen_fantom_quest_3.jpg b/public/articles/games/fantom_quest/images/screen_fantom_quest_3.jpg similarity index 100% rename from public/game-articles/fantom_quest/images/screen_fantom_quest_3.jpg rename to public/articles/games/fantom_quest/images/screen_fantom_quest_3.jpg diff --git a/public/game-articles/fantom_quest/images/screen_fantom_quest_4.jpg b/public/articles/games/fantom_quest/images/screen_fantom_quest_4.jpg similarity index 100% rename from public/game-articles/fantom_quest/images/screen_fantom_quest_4.jpg rename to public/articles/games/fantom_quest/images/screen_fantom_quest_4.jpg diff --git a/public/game-articles/fantom_quest/images/screen_fantom_quest_5.jpg b/public/articles/games/fantom_quest/images/screen_fantom_quest_5.jpg similarity index 100% rename from public/game-articles/fantom_quest/images/screen_fantom_quest_5.jpg rename to public/articles/games/fantom_quest/images/screen_fantom_quest_5.jpg diff --git a/public/game-articles/fantom_quest/lucie_ventadour.txt b/public/articles/games/fantom_quest/lucie_ventadour.txt similarity index 63% rename from public/game-articles/fantom_quest/lucie_ventadour.txt rename to public/articles/games/fantom_quest/lucie_ventadour.txt index 33d4e8f..c0c017a 100755 --- a/public/game-articles/fantom_quest/lucie_ventadour.txt +++ b/public/articles/games/fantom_quest/lucie_ventadour.txt @@ -1,2 +1,2 @@ Salut moi c'est Lu7, je suis une geek et je vois la vie en pixels >< ! -<a href="https://www.lucieventadour.com/" target="_blank">Site web</a> -- <a href="http://lucipix.canalblog.com/" target="_blank">Blog pix</a> \ No newline at end of file +<a href="https://www.lucieventadour.com/" target="_blank">Site web</a> | <a href="http://lucipix.canalblog.com/" target="_blank">Blog pix</a> \ No newline at end of file diff --git a/public/game-articles/fantom_quest/pijar.txt b/public/articles/games/fantom_quest/pijar.txt similarity index 55% rename from public/game-articles/fantom_quest/pijar.txt rename to public/articles/games/fantom_quest/pijar.txt index e301b6b..e9b1b47 100755 --- a/public/game-articles/fantom_quest/pijar.txt +++ b/public/articles/games/fantom_quest/pijar.txt @@ -1,5 +1,5 @@ Salut moi c'est pijar. Je fais des trucs. J'aime bien le code et je fais du dessin et tout. -<a href="https://pierrejarriges-dessins.blogspot.com" target="_blank">Blog Dessin</a> -- <a href="https://soundcloud.com/abstractobject" target="_blank">Soundcloud</a> -<a href="https://gitlab.com/peter_rabbit" target="_blank">Gitlab</a> -- <a href=" https://github.com/codnpix" target="_blank">Github</a> \ No newline at end of file +<a href="https://pierrejarriges-dessins.blogspot.com" target="_blank">Blog Dessin</a> | <a href="https://soundcloud.com/abstractobject" target="_blank">Soundcloud</a> +<a href="https://gitlab.com/peter_rabbit" target="_blank">Gitlab</a> | <a href=" https://github.com/codnpix" target="_blank">Github</a> \ No newline at end of file diff --git a/public/articles/games/index.json b/public/articles/games/index.json new file mode 100755 index 0000000..a9d294c --- /dev/null +++ b/public/articles/games/index.json @@ -0,0 +1,3 @@ +{ + "articles": ["fantom_quest"] +} diff --git a/public/articles/news/index.json b/public/articles/news/index.json new file mode 100755 index 0000000..0f654c8 --- /dev/null +++ b/public/articles/news/index.json @@ -0,0 +1,3 @@ +{ + "articles": ["installation-kuadrado"] +} diff --git a/public/news-articles/installation-kuadrado/images/atelier_bureau.jpg b/public/articles/news/installation-kuadrado/images/atelier_bureau.jpg similarity index 100% rename from public/news-articles/installation-kuadrado/images/atelier_bureau.jpg rename to public/articles/news/installation-kuadrado/images/atelier_bureau.jpg diff --git a/public/news-articles/installation-kuadrado/images/local_entree.jpg b/public/articles/news/installation-kuadrado/images/local_entree.jpg similarity index 100% rename from public/news-articles/installation-kuadrado/images/local_entree.jpg rename to public/articles/news/installation-kuadrado/images/local_entree.jpg diff --git a/public/news-articles/installation-kuadrado/installation-kuadrado.json b/public/articles/news/installation-kuadrado/installation-kuadrado.json similarity index 100% rename from public/news-articles/installation-kuadrado/installation-kuadrado.json rename to public/articles/news/installation-kuadrado/installation-kuadrado.json diff --git a/public/news-articles/installation-kuadrado/installation-kuadrado.txt b/public/articles/news/installation-kuadrado/installation-kuadrado.txt similarity index 100% rename from public/news-articles/installation-kuadrado/installation-kuadrado.txt rename to public/articles/news/installation-kuadrado/installation-kuadrado.txt diff --git a/public/articles/software/index.json b/public/articles/software/index.json new file mode 100755 index 0000000..b2212f7 --- /dev/null +++ b/public/articles/software/index.json @@ -0,0 +1,3 @@ +{ + "articles": ["watergun"] +} diff --git a/public/software-articles/watergun/images/watergun-overview-light.jpg b/public/articles/software/watergun/images/watergun-overview-light.jpg similarity index 100% rename from public/software-articles/watergun/images/watergun-overview-light.jpg rename to public/articles/software/watergun/images/watergun-overview-light.jpg diff --git a/public/software-articles/watergun/watergun.json b/public/articles/software/watergun/watergun.json similarity index 92% rename from public/software-articles/watergun/watergun.json rename to public/articles/software/watergun/watergun.json index 03034ea..f87ffae 100755 --- a/public/software-articles/watergun/watergun.json +++ b/public/articles/software/watergun/watergun.json @@ -1,7 +1,7 @@ { "title": "Watergun", "date": "2021/01/23", - "status": "Work in progress", + "status": "wip", "subtitle": "Un éditeur de site web ultra-light", "body": "<file>watergun.txt", "technical": { diff --git a/public/software-articles/watergun/watergun.txt b/public/articles/software/watergun/watergun.txt similarity index 100% rename from public/software-articles/watergun/watergun.txt rename to public/articles/software/watergun/watergun.txt diff --git a/public/education/education.js b/public/education/education.js index 00e5947..056d1e0 100644 --- a/public/education/education.js +++ b/public/education/education.js @@ -11,9 +11,7 @@ const { server_url } = require("./config"); module.exports = { images_url: `${server_url}assets/images`, - news_articles_url: `${server_url}news-articles`, - game_articles_url: `${server_url}game-articles`, - software_articles_url: `${server_url}software-articles`, + articles_url: `${server_url}articles/`, }; },{"./config":1}],3:[function(require,module,exports){ diff --git a/public/game-articles/index.json b/public/game-articles/index.json deleted file mode 100755 index e1e7267..0000000 --- a/public/game-articles/index.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "articles": ["fantom_quest/fantom_quest.json"] -} diff --git a/public/games/games.js b/public/games/games.js index 8daf77a..93f4459 100644 --- a/public/games/games.js +++ b/public/games/games.js @@ -11,9 +11,7 @@ const { server_url } = require("./config"); module.exports = { images_url: `${server_url}assets/images`, - news_articles_url: `${server_url}news-articles`, - game_articles_url: `${server_url}game-articles`, - software_articles_url: `${server_url}software-articles`, + articles_url: `${server_url}articles/`, }; },{"./config":1}],3:[function(require,module,exports){ @@ -98,14 +96,24 @@ function getArticleDate(date) { return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`; } +function getArticleStatus(status) { + switch (status) { + case "wip": + return "En développement"; + case "released": + return "En production"; + } +} + function loadArticles(dir_url) { return new Promise((resolve, reject) => { fetchjson(`${dir_url}/index.json`) .then(json => { Promise.all( - json.articles.map(async articlePath => { - const art = await fetchjson(`${dir_url}/${articlePath}`); - const tmpSplit = articlePath.split("/"); + json.articles.map(async artDir => { + const artPath = `${artDir}/${artDir}.json`; + const art = await fetchjson(`${dir_url}/${artPath}`); + const tmpSplit = artPath.split("/"); tmpSplit.pop(); const absArtPath = `${dir_url}/${tmpSplit.join("/")}`; return Object.assign(art, { path: absArtPath }); @@ -145,6 +153,7 @@ module.exports = { getArticleBody, getArticleDate, populateArticles, + getArticleStatus, }; },{"./fetch":5}],5:[function(require,module,exports){ @@ -263,7 +272,7 @@ module.exports = { "use strict"; const ImageCarousel = require("../../../generic-components/image-carousel"); -const { getArticleBody } = require("../../../lib/article-utils"); +const { getArticleBody, getArticleStatus } = require("../../../lib/article-utils"); class TeamMember { constructor(props) { @@ -313,7 +322,7 @@ class GameArticle { } render() { - const { title, tags, body, subtitle, images, path, team_subarticles } = this.props; + const { title, tags, body, subtitle, images, path, team_subarticles, status } = this.props; return { tag: "article", class: "game-article", @@ -325,11 +334,29 @@ class GameArticle { }, { tag: "div", - class: "game-tags", - contents: tags.map(tag => { - return { tag: "span", contents: tag }; - }), + class: "game-infos", + contents: [ + { + tag: "div", + class: "game-tags", + contents: tags.map(tag => { + return { tag: "span", contents: tag }; + }), + }, + { + tag: "div", + class: "game-status", + contents: [ + { + tag: "span", + class: `project-status ${status}`, + contents: getArticleStatus(status), + }, + ], + }, + ], }, + { tag: "h3", class: "game-subtitle", @@ -368,7 +395,7 @@ module.exports = GameArticle; },{"../../../generic-components/image-carousel":3,"../../../lib/article-utils":4}],8:[function(require,module,exports){ "use strict"; -const { game_articles_url } = require("../../../../constants"); +const { articles_url } = require("../../../../constants"); const { loadArticles, populateArticles } = require("../../../lib/article-utils"); const objectHtmlRenderer = require("../../../lib/object-html-renderer"); const GameArticle = require("./game-article"); @@ -384,7 +411,7 @@ class GameArticles { } loadArticles() { - loadArticles(game_articles_url) + loadArticles(`${articles_url}/games`) .then(articles => { Promise.all( articles.map(async a => { diff --git a/public/main.js b/public/main.js index 26dba74..dcc30fb 100644 --- a/public/main.js +++ b/public/main.js @@ -11,9 +11,7 @@ const { server_url } = require("./config"); module.exports = { images_url: `${server_url}assets/images`, - news_articles_url: `${server_url}news-articles`, - game_articles_url: `${server_url}game-articles`, - software_articles_url: `${server_url}software-articles`, + articles_url: `${server_url}articles/`, }; },{"./config":1}],3:[function(require,module,exports){ @@ -88,7 +86,7 @@ module.exports = ImageCarousel; },{"../lib/object-html-renderer":9}],4:[function(require,module,exports){ "use strict"; -const { news_articles_url } = require("../../constants"); +const { articles_url } = require("../../constants"); const objectHtmlRenderer = require("../lib/object-html-renderer"); const ImageCarousel = require("../generic-components/image-carousel"); const { loadArticles, getArticleDate, getArticleBody } = require("../lib/article-utils"); @@ -105,7 +103,7 @@ class NewsArticles { } loadArticles() { - loadArticles(news_articles_url).then(articles => { + loadArticles(`${articles_url}/news`).then(articles => { this.state.articles = articles; this.state.showArticleIndex = this.state.articles.length - 1; this.refresh(); @@ -383,14 +381,24 @@ function getArticleDate(date) { return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`; } +function getArticleStatus(status) { + switch (status) { + case "wip": + return "En développement"; + case "released": + return "En production"; + } +} + function loadArticles(dir_url) { return new Promise((resolve, reject) => { fetchjson(`${dir_url}/index.json`) .then(json => { Promise.all( - json.articles.map(async articlePath => { - const art = await fetchjson(`${dir_url}/${articlePath}`); - const tmpSplit = articlePath.split("/"); + json.articles.map(async artDir => { + const artPath = `${artDir}/${artDir}.json`; + const art = await fetchjson(`${dir_url}/${artPath}`); + const tmpSplit = artPath.split("/"); tmpSplit.pop(); const absArtPath = `${dir_url}/${tmpSplit.join("/")}`; return Object.assign(art, { path: absArtPath }); @@ -430,6 +438,7 @@ module.exports = { getArticleBody, getArticleDate, populateArticles, + getArticleStatus, }; },{"./fetch":8}],8:[function(require,module,exports){ diff --git a/public/news-articles/index.json b/public/news-articles/index.json deleted file mode 100755 index 42c50f0..0000000 --- a/public/news-articles/index.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "articles": ["installation-kuadrado/installation-kuadrado.json"] -} diff --git a/public/software-articles/index.json b/public/software-articles/index.json deleted file mode 100755 index b5f5003..0000000 --- a/public/software-articles/index.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "articles": ["watergun/watergun.json"] -} diff --git a/public/software-development/software-development.js b/public/software-development/software-development.js index 6af223e..3ecadce 100644 --- a/public/software-development/software-development.js +++ b/public/software-development/software-development.js @@ -11,9 +11,7 @@ const { server_url } = require("./config"); module.exports = { images_url: `${server_url}assets/images`, - news_articles_url: `${server_url}news-articles`, - game_articles_url: `${server_url}game-articles`, - software_articles_url: `${server_url}software-articles`, + articles_url: `${server_url}articles/`, }; },{"./config":1}],3:[function(require,module,exports){ @@ -98,14 +96,24 @@ function getArticleDate(date) { return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`; } +function getArticleStatus(status) { + switch (status) { + case "wip": + return "En développement"; + case "released": + return "En production"; + } +} + function loadArticles(dir_url) { return new Promise((resolve, reject) => { fetchjson(`${dir_url}/index.json`) .then(json => { Promise.all( - json.articles.map(async articlePath => { - const art = await fetchjson(`${dir_url}/${articlePath}`); - const tmpSplit = articlePath.split("/"); + json.articles.map(async artDir => { + const artPath = `${artDir}/${artDir}.json`; + const art = await fetchjson(`${dir_url}/${artPath}`); + const tmpSplit = artPath.split("/"); tmpSplit.pop(); const absArtPath = `${dir_url}/${tmpSplit.join("/")}`; return Object.assign(art, { path: absArtPath }); @@ -145,6 +153,7 @@ module.exports = { getArticleBody, getArticleDate, populateArticles, + getArticleStatus, }; },{"./fetch":5}],5:[function(require,module,exports){ @@ -262,9 +271,9 @@ module.exports = { },{}],7:[function(require,module,exports){ "use strict"; -const { software_articles_url } = require("../../../../constants"); +const { articles_url } = require("../../../../constants"); const ImageCarousel = require("../../../generic-components/image-carousel"); -const { loadArticles, getArticleBody, getArticleDate } = require("../../../lib/article-utils"); +const { loadArticles, getArticleBody, getArticleDate, getArticleStatus } = require("../../../lib/article-utils"); const objectHtmlRenderer = require("../../../lib/object-html-renderer"); class SoftwareArticle { @@ -299,8 +308,8 @@ class SoftwareArticle { }, { tag: "span", - class: "software-status", - contents: status, + class: `project-status ${status}`, + contents: getArticleStatus(status), }, ], }, @@ -391,7 +400,7 @@ class SoftwareArticles { } loadArticles() { - loadArticles(software_articles_url) + loadArticles(`${articles_url}/software`) .then(articles => { this.state.articles = articles; this.refresh(); diff --git a/public/style/style.css b/public/style/style.css index e4c3310..e392196 100644 --- a/public/style/style.css +++ b/public/style/style.css @@ -337,6 +337,19 @@ main #page-container .page-contents-center { max-width: 100%; margin: 0 auto; } +main #page-container .project-status { + margin: 0 20px; + color: #3c4144; + padding: 10px 20px; + font-weight: bold; + border-radius: 20px; +} +main #page-container .project-status.wip { + background-color: #e5a002; +} +main #page-container .project-status.prod { + background-color: #368736; +} main #page-container #home-page { display: flex; flex-direction: column; @@ -849,7 +862,7 @@ main #page-container #games-page .game-articles article.game-article { grid-template-rows: repeat(6, auto); background-color: #3c4144; } -main #page-container #games-page .game-articles article.game-article *:not(a) { +main #page-container #games-page .game-articles article.game-article *:not(a, .project-status) { color: #d4d9dd; } main #page-container #games-page .game-articles article.game-article .game-title { @@ -861,14 +874,19 @@ main #page-container #games-page .game-articles article.game-article .game-title font-size: 35px; font-style: italic; } -main #page-container #games-page .game-articles article.game-article .game-tags { +main #page-container #games-page .game-articles article.game-article .game-infos { + font-size: 13px; grid-column: 1; + display: grid; + grid-template-columns: auto auto; +} +main #page-container #games-page .game-articles article.game-article .game-infos .game-tags { display: flex; gap: 10px; flex-wrap: wrap; margin: 10px 20px; } -main #page-container #games-page .game-articles article.game-article .game-tags span { +main #page-container #games-page .game-articles article.game-article .game-infos .game-tags span { font-size: 12px; padding: 6px; background-color: #6b7880; @@ -876,6 +894,12 @@ main #page-container #games-page .game-articles article.game-article .game-tags border-radius: 5px; font-weight: 600; } +main #page-container #games-page .game-articles article.game-article .game-infos .game-status { + display: flex; + justify-content: center; + align-items: center; + flex-direction: row; +} main #page-container #games-page .game-articles article.game-article .game-subtitle { grid-column: 1; margin: 10px 20px 30px; @@ -952,6 +976,9 @@ main #page-container #games-page .game-articles article.placeholder * { padding: 20px; font-size: 25px; } + main #page-container #games-page .game-articles article.game-article .game-infos { + grid-template-columns: 1fr; + } main #page-container #games-page .game-articles article.game-article .image-carousel { grid-column: 1; grid-row: 2; @@ -1000,14 +1027,6 @@ main #page-container #software-page .software-articles article.software-article color: #96a5ae; font-style: italic; } -main #page-container #software-page .software-articles article.software-article .software-infos .software-status { - margin: 0 20px; - background-color: #e5a002; - color: #3c4144; - padding: 10px 20px; - font-weight: bold; - border-radius: 20px; -} main #page-container #software-page .software-articles article.software-article .software-subtitle { grid-column: 1; margin: 20px; diff --git a/src/home-page-components/news-articles.js b/src/home-page-components/news-articles.js index 57eacfb..9ec0219 100644 --- a/src/home-page-components/news-articles.js +++ b/src/home-page-components/news-articles.js @@ -1,6 +1,6 @@ "use strict"; -const { news_articles_url } = require("../../constants"); +const { articles_url } = require("../../constants"); const objectHtmlRenderer = require("../lib/object-html-renderer"); const ImageCarousel = require("../generic-components/image-carousel"); const { loadArticles, getArticleDate, getArticleBody } = require("../lib/article-utils"); @@ -17,7 +17,7 @@ class NewsArticles { } loadArticles() { - loadArticles(news_articles_url).then(articles => { + loadArticles(`${articles_url}/news`).then(articles => { this.state.articles = articles; this.state.showArticleIndex = this.state.articles.length - 1; this.refresh(); diff --git a/src/lib/article-utils.js b/src/lib/article-utils.js index 29ac1e1..efde108 100644 --- a/src/lib/article-utils.js +++ b/src/lib/article-utils.js @@ -10,14 +10,24 @@ function getArticleDate(date) { return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`; } +function getArticleStatus(status) { + switch (status) { + case "wip": + return "En développement"; + case "released": + return "En production"; + } +} + function loadArticles(dir_url) { return new Promise((resolve, reject) => { fetchjson(`${dir_url}/index.json`) .then(json => { Promise.all( - json.articles.map(async articlePath => { - const art = await fetchjson(`${dir_url}/${articlePath}`); - const tmpSplit = articlePath.split("/"); + json.articles.map(async artDir => { + const artPath = `${artDir}/${artDir}.json`; + const art = await fetchjson(`${dir_url}/${artPath}`); + const tmpSplit = artPath.split("/"); tmpSplit.pop(); const absArtPath = `${dir_url}/${tmpSplit.join("/")}`; return Object.assign(art, { path: absArtPath }); @@ -57,4 +67,5 @@ module.exports = { getArticleBody, getArticleDate, populateArticles, + getArticleStatus, }; diff --git a/src/pages/games/components/game-article.js b/src/pages/games/components/game-article.js index edd332a..afca661 100644 --- a/src/pages/games/components/game-article.js +++ b/src/pages/games/components/game-article.js @@ -1,7 +1,7 @@ "use strict"; const ImageCarousel = require("../../../generic-components/image-carousel"); -const { getArticleBody } = require("../../../lib/article-utils"); +const { getArticleBody, getArticleStatus } = require("../../../lib/article-utils"); class TeamMember { constructor(props) { @@ -51,7 +51,7 @@ class GameArticle { } render() { - const { title, tags, body, subtitle, images, path, team_subarticles } = this.props; + const { title, tags, body, subtitle, images, path, team_subarticles, status } = this.props; return { tag: "article", class: "game-article", @@ -63,11 +63,29 @@ class GameArticle { }, { tag: "div", - class: "game-tags", - contents: tags.map(tag => { - return { tag: "span", contents: tag }; - }), + class: "game-infos", + contents: [ + { + tag: "div", + class: "game-tags", + contents: tags.map(tag => { + return { tag: "span", contents: tag }; + }), + }, + { + tag: "div", + class: "game-status", + contents: [ + { + tag: "span", + class: `project-status ${status}`, + contents: getArticleStatus(status), + }, + ], + }, + ], }, + { tag: "h3", class: "game-subtitle", diff --git a/src/pages/games/components/game-articles.js b/src/pages/games/components/game-articles.js index 6f7fb85..e80d8c7 100644 --- a/src/pages/games/components/game-articles.js +++ b/src/pages/games/components/game-articles.js @@ -1,6 +1,6 @@ "use strict"; -const { game_articles_url } = require("../../../../constants"); +const { articles_url } = require("../../../../constants"); const { loadArticles, populateArticles } = require("../../../lib/article-utils"); const objectHtmlRenderer = require("../../../lib/object-html-renderer"); const GameArticle = require("./game-article"); @@ -16,7 +16,7 @@ class GameArticles { } loadArticles() { - loadArticles(game_articles_url) + loadArticles(`${articles_url}/games`) .then(articles => { Promise.all( articles.map(async a => { diff --git a/src/pages/games/games.scss b/src/pages/games/games.scss index 341bf60..2355abf 100644 --- a/src/pages/games/games.scss +++ b/src/pages/games/games.scss @@ -8,7 +8,7 @@ &.game-article { grid-template-rows: repeat(6, auto); background-color: $dark_2; - *:not(a) { + *:not(a, .project-status) { color: $light_0; } .game-title { @@ -20,21 +20,30 @@ font-size: 35px; font-style: italic; } - .game-tags { + .game-infos { + font-size: 13px; grid-column: 1; - display: flex; - gap: 10px; - flex-wrap: wrap; - margin: 10px 20px; - span { - font-size: 12px; - padding: 6px; - background-color: $medium_grey; - color: $light_0; - border-radius: 5px; - font-weight: 600; + display: grid; + grid-template-columns: auto auto; + .game-tags { + display: flex; + gap: 10px; + flex-wrap: wrap; + margin: 10px 20px; + span { + font-size: 12px; + padding: 6px; + background-color: $medium_grey; + color: $light_0; + border-radius: 5px; + font-weight: 600; + } + } + .game-status { + @include flex-center; } } + .game-subtitle { grid-column: 1; margin: 10px 20px 30px; @@ -110,6 +119,9 @@ padding: 20px; font-size: 25px; } + .game-infos { + grid-template-columns: 1fr; + } .image-carousel { grid-column: 1; diff --git a/src/pages/software-development/components/software-articles.js b/src/pages/software-development/components/software-articles.js index 15cb37c..0d0254d 100644 --- a/src/pages/software-development/components/software-articles.js +++ b/src/pages/software-development/components/software-articles.js @@ -1,8 +1,8 @@ "use strict"; -const { software_articles_url } = require("../../../../constants"); +const { articles_url } = require("../../../../constants"); const ImageCarousel = require("../../../generic-components/image-carousel"); -const { loadArticles, getArticleBody, getArticleDate } = require("../../../lib/article-utils"); +const { loadArticles, getArticleBody, getArticleDate, getArticleStatus } = require("../../../lib/article-utils"); const objectHtmlRenderer = require("../../../lib/object-html-renderer"); class SoftwareArticle { @@ -37,8 +37,8 @@ class SoftwareArticle { }, { tag: "span", - class: "software-status", - contents: status, + class: `project-status ${status}`, + contents: getArticleStatus(status), }, ], }, @@ -129,7 +129,7 @@ class SoftwareArticles { } loadArticles() { - loadArticles(software_articles_url) + loadArticles(`${articles_url}/software`) .then(articles => { this.state.articles = articles; this.refresh(); diff --git a/src/pages/software-development/software-development.scss b/src/pages/software-development/software-development.scss index e5a7886..d5549a3 100644 --- a/src/pages/software-development/software-development.scss +++ b/src/pages/software-development/software-development.scss @@ -27,14 +27,6 @@ color: $light_1; font-style: italic; } - .software-status { - margin: 0 20px; - background-color: $yellow_1; - color: $dark_2; - padding: 10px 20px; - font-weight: bold; - border-radius: 20px; - } } .software-subtitle { diff --git a/src/style.scss b/src/style.scss index 2bc18e6..79e008e 100644 --- a/src/style.scss +++ b/src/style.scss @@ -251,6 +251,9 @@ main { .page-contents-center { @include page-contents-center; } + .project-status { + @include project-status + } @import "./homepage.scss"; @import "./pages/education/education.scss"; @import "./pages/games/games.scss"; diff --git a/src/theme.scss b/src/theme.scss index 5d4d057..627be84 100644 --- a/src/theme.scss +++ b/src/theme.scss @@ -134,6 +134,20 @@ $page_contents_center_width: 1300px; } } +@mixin project-status { + margin: 0 20px; + color: $dark_2; + padding: 10px 20px; + font-weight: bold; + border-radius: 20px; + &.wip { + background-color: $yellow_1; + } + &.prod { + background-color: $kaki; + } +} + @mixin flex-center { display: flex; justify-content: center; -- GitLab