diff options
| author | realtradam <[email protected]> | 2024-05-17 22:16:00 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2024-05-17 22:16:00 -0400 |
| commit | 3321db8f9c549103ebae46bf025a3135208a2e3b (patch) | |
| tree | 49dd106a76a73ea3e4ec0e826a9b2d690d8c5363 /app/javascript | |
| parent | 98571b599449bfd7497c9b098a07b376da670319 (diff) | |
| download | gameHolster-3321db8f9c549103ebae46bf025a3135208a2e3b.tar.gz gameHolster-3321db8f9c549103ebae46bf025a3135208a2e3b.zip | |
uploading images to games and also iframes for games
Diffstat (limited to 'app/javascript')
| -rw-r--r-- | app/javascript/components/Game.jsx | 23 | ||||
| -rw-r--r-- | app/javascript/components/GameCard.jsx | 15 | ||||
| -rw-r--r-- | app/javascript/components/Games.jsx | 27 | ||||
| -rw-r--r-- | app/javascript/components/Home.jsx | 2 | ||||
| -rw-r--r-- | app/javascript/routes/index.jsx | 2 |
5 files changed, 60 insertions, 9 deletions
diff --git a/app/javascript/components/Game.jsx b/app/javascript/components/Game.jsx new file mode 100644 index 0000000..8b80b8e --- /dev/null +++ b/app/javascript/components/Game.jsx @@ -0,0 +1,23 @@ +import React, { useState, useEffect } from "react"; +import { useParams } from "react-router-dom"; +//import { Link } from "react-router-dom"; +import GameCard from "./GameCard"; +import Button from "./Button"; + +//<Route path="/games/:user/:game" element={<Game />} /> + +//export default () => ( +export default function Games () { + let { user, game } = useParams(); +//http://localhost:3000/api/v1/game/realtradam/orc-arena-of-time/index.html + return( + <> + <div> + <div className="flex flex-col gap-16 max-w-6xl shrink"> + <div className="title font-bold text-6xl font-title">Orc: Arena of Time</div> + <iframe style={{ aspectRatio: 1 }} className="bg-black aspect-square max-h-[90vh] rounded" src="http://localhost:3000/api/v1/game/realtradam/orc-arena-of-time/index.html" title={game}></iframe> + </div> + </div> + </> + ); +}; diff --git a/app/javascript/components/GameCard.jsx b/app/javascript/components/GameCard.jsx index 6b79630..9cd815d 100644 --- a/app/javascript/components/GameCard.jsx +++ b/app/javascript/components/GameCard.jsx @@ -1,17 +1,24 @@ import React from "react"; //import { Link } from "react-router-dom"; -export default function GameCard ({ link = "./", width = "72" }) +//game = { +// card_img: "", +// char_img: "", +// title_img: "" +//} + +export default function GameCard ({ link = "./", width = "72", game = { card_img: "https://ggayane.github.io/css-experiments/cards/dark_rider-cover.jpg", char_img: "https://ggayane.github.io/css-experiments/cards/dark_rider-character.png", title_img: "https://ggayane.github.io/css-experiments/cards/dark_rider-title.png" } }) { + return ( <> <a href={ link } className="block w-min pt-10 px-1" target="_blank"> <div className="gameCard"> <div className="gameCardWrapper"> - <img src="https://ggayane.github.io/css-experiments/cards/dark_rider-cover.jpg" className="gameCardCoverImg" /> + <img src={`/api/v1/games_img/realtradam/${game.titleSlug}.png?type=card`} className="gameCardCoverImg" /> </div> - <img src="https://ggayane.github.io/css-experiments/cards/dark_rider-title.png" className="gameTitleImg p-5%" /> - <img src="https://ggayane.github.io/css-experiments/cards/dark_rider-character.webp" className="gameCharacterImg" /> + <img src={`/api/v1/games_img/realtradam/${game.titleSlug}.png?type=title`} className="gameTitleImg p-5%" /> + <img src={`/api/v1/games_img/realtradam/${game.titleSlug}.png?type=char`} className="gameCharacterImg" /> </div> </a> </> diff --git a/app/javascript/components/Games.jsx b/app/javascript/components/Games.jsx index 1862caa..f1545b8 100644 --- a/app/javascript/components/Games.jsx +++ b/app/javascript/components/Games.jsx @@ -1,12 +1,13 @@ import React, { useState, useEffect } from "react"; //import { Link } from "react-router-dom"; import GameCard from "./GameCard"; +import Button from "./Button"; //export default () => ( export default function Games () { const [games, setGames] = useState([]); useEffect(() => { - const url = "/api/v1/games/index"; + const url = "/api/v1/games"; fetch(url).then((response) => { if (response.ok) { return response.json(); @@ -14,8 +15,8 @@ export default function Games () { throw new Error("Network response was not ok."); }).then((response) => setGames(response)).catch(() => navigate("/")); }, []); - const allGames = games.map((games, index) => ( - <div>{ blog }</div> + const allGames = games.map((game) => ( + <GameCard game={game} key={game.id}/> )); var handleSubmit = (e) => { e.preventDefault() //stops submit from happening @@ -26,6 +27,9 @@ export default function Games () { { formData.append('game[game_files][]', form.game_files.files[i], form.game_files.files[i].value); } + formData.append('game[card_img]', form.card_img.files[0], form.card_img.value); + formData.append('game[char_img]', form.char_img.files[0], form.char_img.value); + formData.append('game[title_img]', form.title_img.files[0], form.title_img.value); for (var pair of formData.entries()) { console.log(pair[0] + ', ' + pair[1]) @@ -53,7 +57,22 @@ export default function Games () { <label>Files</label> <input type="file" multiple="multiple" name="game_files" /> </div> - <button type="submit" className="w-32 bg-stone-900 text-stone-50 rounded">submit</button> + <div> + <label>Card Image</label> + <input type="file" name="card_img" /> + </div> + <div> + <label>Character Image</label> + <input type="file" name="char_img" /> + </div> + <div> + <label>Title Image</label> + <input type="file" name="title_img" /> + </div> + <div style={{ boxShadow: 'rgba(255,255,255,.1) 0 1px 0,rgba(0,0,0,.8) 0 1px 7px 0 inset' }} className="p-[5px] w-min h-min bg-stone-800 rounded-[5px]"> + <Button width={ 28 } height={ 12 } link={ <button type="submit" className="w-28 h-12 bg-stone-transparent text-stone-50 rounded">Submit</button> }/> + </div> + </form> </div> </div> diff --git a/app/javascript/components/Home.jsx b/app/javascript/components/Home.jsx index 5f79834..863d81d 100644 --- a/app/javascript/components/Home.jsx +++ b/app/javascript/components/Home.jsx @@ -28,7 +28,7 @@ export default function Home () { <div className=""> <div className="jumbotron jumbotron-fluid bg-transparent"> <div className="container secondary-color"> - <h1 className="text-2xl">Debug!</h1> + <h1 className="text-2xl">Debug! Again</h1> <p className=""> Ea optio vitae culpa voluptatem consectetur. Ab quisquam sed ipsum. Perspiciatis minus odit quas qui consequuntur dicta reiciendis a. Nihil minima sed aliquam. </p> diff --git a/app/javascript/routes/index.jsx b/app/javascript/routes/index.jsx index 6ab155f..1b778ef 100644 --- a/app/javascript/routes/index.jsx +++ b/app/javascript/routes/index.jsx @@ -3,6 +3,7 @@ import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; import Home from "../components/Home"; import Blogs from "../components/Blogs"; import Games from "../components/Games"; +import Game from "../components/Game"; import Layout from "../components/Layout"; export default function index() @@ -26,6 +27,7 @@ export default function index() <Route index element={<Home />} /> <Route path="/blogs" element={<Blogs />} /> <Route path="/games" element={<Games />} /> + <Route path="/games/:user/:game" element={<Game />} /> </Route> </Routes> </Router> |
