Display questions
This commit is contained in:
parent
a7b56ebbf9
commit
9e03336d1a
@ -20,7 +20,9 @@ module.exports = {
|
|||||||
tsconfigRootDir: __dirname,
|
tsconfigRootDir: __dirname,
|
||||||
},
|
},
|
||||||
plugins: ["react", "@typescript-eslint"],
|
plugins: ["react", "@typescript-eslint"],
|
||||||
rules: {},
|
rules: {
|
||||||
|
"@typescript-eslint/no-unsafe-return": "off", // Allow quick oners
|
||||||
|
},
|
||||||
settings: {
|
settings: {
|
||||||
react: {
|
react: {
|
||||||
version: "detect",
|
version: "detect",
|
||||||
|
@ -6,14 +6,16 @@ import { socket } from "./socket";
|
|||||||
import { useAppSelector } from "./hooks";
|
import { useAppSelector } from "./hooks";
|
||||||
import { selectRoomCode } from "./store/socketSlice";
|
import { selectRoomCode } from "./store/socketSlice";
|
||||||
import { selectContestants } from "./store/displaySlice";
|
import { selectContestants } from "./store/displaySlice";
|
||||||
import { selectCategories } from "./store/cluesSlice";
|
import { selectCategories, selectActiveClue } from "./store/cluesSlice";
|
||||||
import ContestantWidget from "./ContestantWidget";
|
import ContestantWidget from "./ContestantWidget";
|
||||||
import Gameboard from "./display/Gameboard";
|
import Gameboard from "./display/Gameboard";
|
||||||
|
import ClueDisplay from "./display/ClueDisplay";
|
||||||
|
|
||||||
const Display = () => {
|
const Display = () => {
|
||||||
const roomCode = useAppSelector(selectRoomCode);
|
const roomCode = useAppSelector(selectRoomCode);
|
||||||
const contestants = useAppSelector(selectContestants);
|
const contestants = useAppSelector(selectContestants);
|
||||||
const categories = useAppSelector(selectCategories);
|
const categories = useAppSelector(selectCategories);
|
||||||
|
const activeClue = useAppSelector(selectActiveClue);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
socket.emit("new-game");
|
socket.emit("new-game");
|
||||||
@ -25,7 +27,12 @@ const Display = () => {
|
|||||||
<h1 className="text-center">Room code is: {roomCode}</h1>
|
<h1 className="text-center">Room code is: {roomCode}</h1>
|
||||||
</Container>
|
</Container>
|
||||||
|
|
||||||
{!isEmpty(categories) && <Gameboard categories={categories} />}
|
{!isEmpty(categories) && !activeClue && (
|
||||||
|
<Gameboard categories={categories} />
|
||||||
|
)}
|
||||||
|
{!isEmpty(categories) && activeClue && (
|
||||||
|
<ClueDisplay activeClue={activeClue} />
|
||||||
|
)}
|
||||||
|
|
||||||
<Stack
|
<Stack
|
||||||
direction="horizontal"
|
direction="horizontal"
|
||||||
|
11
src/display/ClueDisplay.tsx
Normal file
11
src/display/ClueDisplay.tsx
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import type { Clue } from "../store/cluesSlice";
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
activeClue: Clue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ClueDisplay = ({ activeClue }: Props) => {
|
||||||
|
return <div className="text-center fs-1">{activeClue.question}</div>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ClueDisplay;
|
@ -6,14 +6,30 @@ interface Props {
|
|||||||
categories: Category[];
|
categories: Category[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const values = [200, 400, 600, 800, 1000];
|
||||||
|
|
||||||
const Gameboard = ({ categories }: Props) => {
|
const Gameboard = ({ categories }: Props) => {
|
||||||
return (
|
return (
|
||||||
<Container fluid>
|
<Container fluid>
|
||||||
<Row>
|
<Row>
|
||||||
{categories.map(({ name }) => (
|
{categories.map(({ name }) => (
|
||||||
<Col key={name}>{name}</Col>
|
<Col
|
||||||
|
key={name}
|
||||||
|
className="fw-bolder border border-primary text-center"
|
||||||
|
>
|
||||||
|
{name}
|
||||||
|
</Col>
|
||||||
))}
|
))}
|
||||||
</Row>
|
</Row>
|
||||||
|
{values.map((value) => (
|
||||||
|
<Row key={value}>
|
||||||
|
{categories.map(({ name }) => (
|
||||||
|
<Col key={name} className="text-center border border-primary">
|
||||||
|
{value}
|
||||||
|
</Col>
|
||||||
|
))}
|
||||||
|
</Row>
|
||||||
|
))}
|
||||||
</Container>
|
</Container>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -3,20 +3,17 @@ import { checker } from "vite-plugin-checker";
|
|||||||
import react from "@vitejs/plugin-react";
|
import react from "@vitejs/plugin-react";
|
||||||
import eslint from "vite-plugin-eslint";
|
import eslint from "vite-plugin-eslint";
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
server: {
|
server: {
|
||||||
host: true,
|
host: true,
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
{
|
react(),
|
||||||
...react(),
|
checker({
|
||||||
...checker({
|
typescript: true,
|
||||||
typescript: true,
|
eslint: {
|
||||||
eslint: {
|
lintCommand: 'eslint "./src/**/*.{ts,tsx}"',
|
||||||
lintCommand: 'eslint "./src/**/*.{ts,tsx}"',
|
},
|
||||||
},
|
}),
|
||||||
}),
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user