+ framework page choice

This commit is contained in:
AntoninoP 2024-08-11 10:11:50 +02:00
parent 27ec3b79ec
commit 7f1f2df84d
5 changed files with 102 additions and 8 deletions

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -3,12 +3,50 @@ import styles from './CreateServer.module.scss';
import { getUserSubdomain } from "../../service/firebase"; import { getUserSubdomain } from "../../service/firebase";
import serviiApi from "../../service/api.tsx"; import serviiApi from "../../service/api.tsx";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
import vanillaLogo from '../../assets/frameworks/vanilla.png';
import bukkitLogo from '../../assets/frameworks/bukkit.png';
import paperLogo from '../../assets/frameworks/paper.png';
import spigotLogo from '../../assets/frameworks/spigot.png';
const frameworks = [
{ name: 'vanilla', logo: vanillaLogo },
{ name: 'bukkit', logo: bukkitLogo },
{ name: 'spigot', logo: spigotLogo },
{ name: 'paper', logo: paperLogo },
];
const versions = {
vanilla: ['1.21', '1.20', '1.19'],
bukkit: [
'1.15.0', '1.15.1', '1.15.2', '1.15.3', '1.15.4', '1.15.5',
'1.16.0', '1.16.1', '1.16.2', '1.16.3', '1.16.4', '1.16.5',
'1.17.0', '1.17.1', '1.17.2', '1.17.3', '1.17.4', '1.17.5',
'1.18.1', '1.18.2',
'1.19.1', '1.19.2', '1.19.3', '1.19.4',
'1.20.1', '1.20.2', '1.20.4', '1.20.6'
],
spigot: ['1.21', '1.20'],
paper: [
'1.13.1', '1.13.2',
'1.14.1', '1.14.2', '1.14.3', '1.14.4',
'1.15.1', '1.15.2',
'1.16.1', '1.16.2', '1.16.3', '1.16.4', '1.16.5',
'1.17.1',
'1.18.1', '1.18.2',
'1.19.1', '1.19.2', '1.19.3', '1.19.4',
'1.20.1', '1.20.2', '1.20.4', '1.20.5', '1.20.6'
],
};
const CreateServer = ({ user, onCreateServer, onSubdomainUpdate, onCancel, noServers }) => { const CreateServer = ({ user, onCreateServer, onSubdomainUpdate, onCancel, noServers }) => {
const [subdomain, setSubdomain] = useState(null); const [subdomain, setSubdomain] = useState(null);
const [subdomainInput, setSubdomainInput] = useState(''); const [subdomainInput, setSubdomainInput] = useState('');
const [serverName, setServerName] = useState(''); const [serverName, setServerName] = useState('');
const [serverVersion, setServerVersion] = useState(''); const [serverVersion, setServerVersion] = useState();
const [selectedFramework, setSelectedFramework] = useState("vanilla");
const loadSubdomain = async () => { const loadSubdomain = async () => {
try { try {
@ -40,7 +78,7 @@ const CreateServer = ({ user, onCreateServer, onSubdomainUpdate, onCancel, noSer
const handleCreateServer = async () => { const handleCreateServer = async () => {
try { try {
await onCreateServer(serverName, serverVersion); await onCreateServer(serverName, serverVersion , selectedFramework);
} catch (error) { } catch (error) {
console.error('Error creating server:', error); console.error('Error creating server:', error);
} }
@ -92,16 +130,40 @@ const CreateServer = ({ user, onCreateServer, onSubdomainUpdate, onCancel, noSer
value={serverName} value={serverName}
onChange={(e) => setServerName(validateInput(e.target.value))} onChange={(e) => setServerName(validateInput(e.target.value))}
/> />
<div className={styles.subtitle}>Sélection du framework</div>
<div className={styles.carreContainer}>
{frameworks.map((framework, index) => (
<img
key={index}
className={`${styles.carre} ${selectedFramework === framework.name ? styles.selected : ''}`}
src={framework.logo.toLowerCase()}
alt={`${framework.name} Logo`}
onClick={() => {
setSelectedFramework(framework.name);
setServerVersion('');
}}
/>
))}
</div>
<div className={styles.subtitle}>Sélection de la version</div>
<select <select
className={styles.select} className={styles.select}
name="version" name="version"
id="version-select" id="version-select"
value={serverVersion} value={serverVersion}
onChange={(e) => setServerVersion(e.target.value)} onChange={(e) => setServerVersion(e.target.value)}
disabled={!selectedFramework}
> >
<option>Version</option> <option>Version</option>
<option value="1.21">1.21</option> {selectedFramework && versions[selectedFramework].map((version, index) => (
<option key={index} value={version}>{version}</option>
))}
</select> </select>
<div className={styles.buttonContainer}> <div className={styles.buttonContainer}>
<button className={styles.btnServCreate} onClick={handleCreateServer}> <button className={styles.btnServCreate} onClick={handleCreateServer}>
Créer Créer

View File

@ -25,7 +25,6 @@
.input, .select { .input, .select {
width: 60rem; width: 60rem;
padding: 1rem; padding: 1rem;
margin-top: 1rem;
background-color: #090325; background-color: #090325;
border: none; border: none;
border-radius: 0.5rem; border-radius: 0.5rem;
@ -118,7 +117,9 @@
color: #AAA6C3; color: #AAA6C3;
font-weight: 600; font-weight: 600;
text-align: start; text-align: start;
margin-bottom: 2rem; margin-bottom: 1.5rem;
margin-top: 2rem;
} }
.inputsubdomain { .inputsubdomain {
@ -132,6 +133,37 @@
font-size: 1rem; font-size: 1rem;
} }
.carreContainer {
display: flex;
justify-content: space-around;
align-items: center;
width: 100%;
height: 5rem;
}
.carre {
width: 5rem;
height: 5rem;
object-fit: cover;
display: block;
border: 1px solid black;
cursor: pointer;
transition: transform 0.2s;
}
.carre:hover {
transform: scale(1.1);
}
.selected {
border: 2px solid #fff;
transform: scale(1.2);
}
@media (max-width: 800px) { @media (max-width: 800px) {
.buttonContainer{ .buttonContainer{

View File

@ -1,7 +1,7 @@
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import styles from './serverCard.module.scss'; import styles from './serverCard.module.scss';
import paper from '../../assets/frameworks/paper_mc.png'; import paper from '../../assets/frameworks/paper.png';
import spigot from '../../assets/frameworks/spigot.png'; import spigot from '../../assets/frameworks/spigot.png';
import bukkit from '../../assets/frameworks/bukkit.png'; import bukkit from '../../assets/frameworks/bukkit.png';
import vanilla from '../../assets/frameworks/vanilla.png'; import vanilla from '../../assets/frameworks/vanilla.png';

View File

@ -39,10 +39,10 @@ const DashboardPage = ({ user }) => {
loadServers(); loadServers();
}, []); }, []);
const handleCreateServer = async (serverName, serverVersion) => { const handleCreateServer = async (serverName, serverVersion , framework) => {
try { try {
if (!serverName || !serverVersion) return; if (!serverName || !serverVersion) return;
await serviiApi.serverCreate(serverName, serverVersion, "spigot"); await serviiApi.serverCreate(serverName, serverVersion, framework);
await loadServers(); await loadServers();
setShowCreateServer(false); setShowCreateServer(false);
} catch (error) { } catch (error) {