visualizer (without court svg)
continuous-integration/drone/push Build is passing Details

pull/14/head^2
Vivien DUFOUR 1 year ago committed by vivien.dufour
parent 582a623576
commit a08cdc5a0e

@ -0,0 +1,22 @@
#main {
height: 100%;
width: 100%;
background-color: var(--background-color);
}
#topbar {
display: flex;
background-color: var(--main-color);
justify-content: center;
align-items: center;
}
.h1 {
text-align: center;
margin-top: 0;
}
.id {
width: 1000px;
height: 1000px;
}

@ -0,0 +1,16 @@
import React, { CSSProperties, useState } from "react";
import "../style/visualizer.css";
import Court from "../assets/basketball_court.svg";
export default function Visualizer({ id, name }: { id: number; name: string }) {
const [style, setStyle] = useState<CSSProperties>({});
return (
<div id="main">
<div id="topbar">
<h1>{name}</h1>
</div>
<img id="court" src={Court} style={style} alt="Basketball Court" />
</div>
);
}

@ -16,6 +16,7 @@ use App\Model\TacticModel;
use Twig\Loader\FilesystemLoader;
use App\Validation\ValidationFail;
use App\Controller\ErrorController;
use App\Controller\VisualizerController;
$loader = new FilesystemLoader('../src/Views/');
@ -30,6 +31,7 @@ $router->setBasePath($basePath);
$sampleFormController = new SampleFormController(new FormResultGateway($con), $twig);
$editorController = new EditorController(new TacticModel(new TacticInfoGateway($con)));
$visualizerController = new VisualizerController(new TacticModel(new TacticInfoGateway($con)));
$router->map("GET", "/", fn() => $sampleFormController->displayFormReact());
@ -38,6 +40,7 @@ $router->map("GET", "/twig", fn() => $sampleFormController->displayFormTwig());
$router->map("POST", "/submit-twig", fn() => $sampleFormController->submitFormTwig($_POST));
$router->map("GET", "/tactic/new", fn() => $editorController->makeNew());
$router->map("GET", "/tactic/[i:id]/edit", fn(int $id) => $editorController->openEditorFor($id));
$router->map("GET", "/tactic/[i:id]/view", fn(int $id) => $visualizerController->openVisualizer($id));
$match = $router->match();

@ -0,0 +1,34 @@
<?php
namespace App\Controller;
use App\Data\TacticInfo;
use App\Http\HttpCodes;
use App\Http\HttpResponse;
use App\Http\JsonHttpResponse;
use App\Http\ViewHttpResponse;
use App\Model\TacticModel;
class VisualizerController {
private TacticModel $tacticModel;
/**
* @param TacticModel $tacticModel
*/
public function __construct(TacticModel $tacticModel)
{
$this->tacticModel = $tacticModel;
}
public function openVisualizer(int $id): HttpResponse {
$tactic = $this->tacticModel->get($id);
if ($tactic == null) {
return new JsonHttpResponse("la tactique " . $id . " n'existe pas", HttpCodes::NOT_FOUND);
}
return ViewHttpResponse::react("views/Visualizer.tsx", ["name" => $tactic->getName()]);
}
}
Loading…
Cancel
Save