ajout de la page de deduction sans logique, avec des tableau accordion sur différentes tabs, le nombre de tabes est dynamic en fonction des joueurs ⚡
parent
5f57189eaf
commit
6b80d87d2e
@ -0,0 +1,60 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
/* Style */
|
||||||
|
import '../Style/Global.css';
|
||||||
|
//import { useTheme } from '../Style/ThemeContext';
|
||||||
|
|
||||||
|
/* Model */
|
||||||
|
import Stub from '../model/Stub';
|
||||||
|
import Indice from '../model/Indices/Indice';
|
||||||
|
|
||||||
|
|
||||||
|
/* lang */
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
/* Boostrap */
|
||||||
|
import Accordion from 'react-bootstrap/Accordion';
|
||||||
|
import Table from 'react-bootstrap/Table';
|
||||||
|
import Case from './CheckCase';
|
||||||
|
|
||||||
|
|
||||||
|
interface AccordionIndiceComponentProps<T extends Indice> {
|
||||||
|
instance: (new (...args: any[]) => T) | (Function & { prototype: T });
|
||||||
|
head: string;
|
||||||
|
lang: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const AccordionIndice: React.FC<AccordionIndiceComponentProps<any>> = ({ instance, head, lang }) => {
|
||||||
|
const indices = Stub.GenerateIndice();
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Accordion defaultActiveKey={['0']} alwaysOpen style={{width:'100%'}}>
|
||||||
|
<Accordion.Item eventKey="0">
|
||||||
|
<Accordion.Header>{head}</Accordion.Header>
|
||||||
|
<Accordion.Body>
|
||||||
|
<Table striped bordered hover>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Indice</th>
|
||||||
|
<th>Déduction</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{indices
|
||||||
|
.filter((i) => i instanceof instance)
|
||||||
|
.map((indice, index) => (
|
||||||
|
<tr key={index}>
|
||||||
|
<td>{indice.ToString(lang)}</td>
|
||||||
|
<td><Case/></td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</Table>
|
||||||
|
</Accordion.Body>
|
||||||
|
</Accordion.Item>
|
||||||
|
</Accordion>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default AccordionIndice;
|
@ -0,0 +1,41 @@
|
|||||||
|
import React, { useState } from 'react';
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
|
||||||
|
/* style */
|
||||||
|
import { useTheme } from '../Style/ThemeContext';
|
||||||
|
import '../Pages/DeducGrid.css';
|
||||||
|
|
||||||
|
/* res */
|
||||||
|
import Check from '../res/icon/checkboxGreen.png';
|
||||||
|
|
||||||
|
/* trad */
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
|
||||||
|
//@ts-ignore
|
||||||
|
function Case() {
|
||||||
|
const theme = useTheme();
|
||||||
|
|
||||||
|
const [bg, setbg] = useState('whitesmoke');
|
||||||
|
|
||||||
|
//let check = ""; //? avec image
|
||||||
|
//let bg = 'whitesmoke';
|
||||||
|
|
||||||
|
function changeOnCheck(){
|
||||||
|
// if (check == "")check = Check;
|
||||||
|
// else check = "";
|
||||||
|
|
||||||
|
if(bg == "whitesmoke")setbg(theme.colors.tertiary);
|
||||||
|
else setbg("whitesmoke");
|
||||||
|
|
||||||
|
console.log("clic")
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<button className='case' onClick={changeOnCheck} style={{backgroundColor: bg, borderColor:'grey'}}>
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Case;
|
@ -0,0 +1,17 @@
|
|||||||
|
.case{
|
||||||
|
min-width: 50px;
|
||||||
|
min-height: 50px;
|
||||||
|
border: solid 1px whitesmoke;
|
||||||
|
}
|
||||||
|
|
||||||
|
.deducDiv{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sectionAccordion{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-around;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,104 @@
|
|||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
|
||||||
|
/* Style */
|
||||||
|
import './DeducGrid.css';
|
||||||
|
import { useTheme } from '../Style/ThemeContext';
|
||||||
|
|
||||||
|
/* Component */
|
||||||
|
|
||||||
|
/* Boostrap */
|
||||||
|
import Accordion from 'react-bootstrap/Accordion';
|
||||||
|
import Table from 'react-bootstrap/Table';
|
||||||
|
import Tab from 'react-bootstrap/Tab';
|
||||||
|
import Tabs from 'react-bootstrap/Tabs';
|
||||||
|
|
||||||
|
/* nav */
|
||||||
|
import { Link } from 'react-router-dom';
|
||||||
|
|
||||||
|
/* lang */
|
||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
import Case from '../Components/CheckCase';
|
||||||
|
|
||||||
|
import Age from '../model/Indices/AgeIndice'
|
||||||
|
import Stub from '../model/Stub';
|
||||||
|
import Edge from '../model/Graph/Edge';
|
||||||
|
import EdgesIndice from '../model/Indices/EdgesIndice';
|
||||||
|
import AccordionIndice from '../Components/AccordionIndice';
|
||||||
|
import AgeIndice from '../model/Indices/AgeIndice';
|
||||||
|
import ColorIndice from '../model/Indices/ColorIndice';
|
||||||
|
import ColorEdgesIndice from '../model/Indices/ColorEdgesIndice';
|
||||||
|
import SportIndice from '../model/Indices/SportIndice';
|
||||||
|
import NbEdgesIndice from '../model/Indices/NbEdgesIndice';
|
||||||
|
import NbSportIndice from '../model/Indices/NbSportIndice';
|
||||||
|
|
||||||
|
function DeducGrid() {
|
||||||
|
const theme = useTheme();
|
||||||
|
//const indices = Stub.GenerateIndice();
|
||||||
|
|
||||||
|
const joueurs = [
|
||||||
|
"bla",
|
||||||
|
"bli",
|
||||||
|
"blou"
|
||||||
|
]
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div style={{margin:'20px'}}>
|
||||||
|
<Tabs defaultActiveKey="home" id="uncontrolled-tab-example" className="mb-3">
|
||||||
|
{joueurs.map((joueur, index) => (
|
||||||
|
<Tab key={index} eventKey={index.toString()} title={`${joueur} ${index + 1}`}>
|
||||||
|
<div className='deducDiv'>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={AgeIndice} head='Age' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={ColorIndice} head='Couleur de cheveux' lang='fr'/>
|
||||||
|
<AccordionIndice instance={ColorEdgesIndice} head='Couleur de cheveux voisine' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={SportIndice} head='Sport' lang='fr'/>
|
||||||
|
<AccordionIndice instance={NbSportIndice} head='Nombre de Sport' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={EdgesIndice} head='Caractéristique des voisin' lang='fr'/>
|
||||||
|
<AccordionIndice instance={NbEdgesIndice} head='Nombre de voisin' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Tab>
|
||||||
|
))}
|
||||||
|
</Tabs>
|
||||||
|
{/* <Tabs
|
||||||
|
defaultActiveKey="home"
|
||||||
|
id="uncontrolled-tab-example"
|
||||||
|
className="mb-3">
|
||||||
|
<Tab eventKey="home" title="Joueur">
|
||||||
|
<div className='deducDiv'>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={AgeIndice} head='Age' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={ColorIndice} head='Couleur de cheveux' lang='fr'/>
|
||||||
|
<AccordionIndice instance={ColorEdgesIndice} head='Couleur de cheveux voisine' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={SportIndice} head='Sport' lang='fr'/>
|
||||||
|
<AccordionIndice instance={NbSportIndice} head='Nombre de Sport' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
<div className='sectionAccordion'>
|
||||||
|
<AccordionIndice instance={EdgesIndice} head='Caractéristique des voisin' lang='fr'/>
|
||||||
|
<AccordionIndice instance={NbEdgesIndice} head='Nombre de voisin' lang='fr'/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Tab>
|
||||||
|
<Tab eventKey="profile" title="joueur suivant">
|
||||||
|
tables joueur suivant
|
||||||
|
</Tab>
|
||||||
|
<Tab eventKey="contact" title="joueur suivant">
|
||||||
|
tables joueur suivant
|
||||||
|
</Tab>
|
||||||
|
</Tabs> */}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default DeducGrid;
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue