Compare commits
3 Commits
dev
...
drone-setu
Author | SHA1 | Date |
---|---|---|
![]() |
da30c5879b | 2 years ago |
![]() |
162df156f3 | 2 years ago |
![]() |
4c1d72657a | 2 years ago |
@ -1,25 +1,12 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
.DS_Store
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
# Generated by package manager
|
||||
node_modules/
|
||||
|
||||
# production
|
||||
/build
|
||||
# Generated by Cordova
|
||||
/plugins/
|
||||
/platforms/
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
.idea
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<widget id="org.tbasket.app" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
|
||||
<name>TactiqueBasketApplication</name>
|
||||
<description>Sample Apache Cordova App</description>
|
||||
<author email="dev@cordova.apache.org" href="https://cordova.apache.org">
|
||||
Apache Cordova Team
|
||||
</author>
|
||||
<content src="index.html" />
|
||||
<allow-intent href="http://*/*" />
|
||||
<allow-intent href="https://*/*" />
|
||||
<platform name="android">
|
||||
<preference name="Scheme" value="http" />
|
||||
</platform>
|
||||
|
||||
</widget>
|
@ -1,53 +1,28 @@
|
||||
{
|
||||
"name": "tbasket",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"main": "public/electron.js",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.3.0",
|
||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||
"@testing-library/jest-dom": "^5.16.5",
|
||||
"@testing-library/react": "^13.4.0",
|
||||
"@testing-library/user-event": "^13.5.0",
|
||||
"ionicons": "^6.1.3",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-native-ionicons": "^4.6.5",
|
||||
"react-router-dom": "^6.8.1",
|
||||
"react-scripts": "^5.0.1",
|
||||
"web-vitals": "^2.1.4"
|
||||
},
|
||||
"name": "org.tbasket.app",
|
||||
"displayName": "TactiqueBasketApplication",
|
||||
"version": "1.0.0",
|
||||
"description": "A sample Apache Cordova application that responds to the deviceready event.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"start": "react-scripts start --openssl-legacy-provider",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test",
|
||||
"eject": "react-scripts eject",
|
||||
"dev": "concurrently -k \"BROWSER=none npm start\" \"npm:electron\"",
|
||||
"electron": "wait-on tcp:3000 && electron ."
|
||||
},
|
||||
"eslintConfig": {
|
||||
"extends": [
|
||||
"react-app",
|
||||
"react-app/jest"
|
||||
]
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.2%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
"keywords": [
|
||||
"ecosystem:cordova"
|
||||
],
|
||||
"development": [
|
||||
"last 1 chrome version",
|
||||
"last 1 firefox version",
|
||||
"last 1 safari version"
|
||||
]
|
||||
},
|
||||
"author": "Apache Cordova Team",
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"concurrently": "^7.6.0",
|
||||
"electron": "^23.0.0",
|
||||
"electron-is-dev": "^2.0.0",
|
||||
"wait-on": "^7.0.1"
|
||||
"cordova-android": "^11.0.0",
|
||||
"cordova-browser": "^6.0.0",
|
||||
"cordova-electron": "^3.1.0"
|
||||
},
|
||||
"cordova": {
|
||||
"platforms": [
|
||||
"electron",
|
||||
"browser",
|
||||
"android"
|
||||
],
|
||||
"plugins": {}
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
const path = require('path');
|
||||
|
||||
const { app, BrowserWindow } = require('electron');
|
||||
const isDev = require('electron-is-dev');
|
||||
|
||||
function createWindow() {
|
||||
// Create the browser window.
|
||||
const win = new BrowserWindow({
|
||||
width: 800,
|
||||
height: 600,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
},
|
||||
});
|
||||
|
||||
// and load the index.html of the app.
|
||||
// win.loadFile("index.html");
|
||||
win.loadURL(
|
||||
isDev
|
||||
? 'http://localhost:3000'
|
||||
: `file://${path.join(__dirname, '../build/index.html')}`
|
||||
);
|
||||
// Open the DevTools.
|
||||
if (isDev) {
|
||||
win.webContents.openDevTools({ mode: 'detach' });
|
||||
}
|
||||
}
|
||||
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
app.whenReady().then(createWindow);
|
||||
|
||||
// Quit when all windows are closed, except on macOS. There, it's common
|
||||
// for applications and their menu bar to stay active until the user quits
|
||||
// explicitly with Cmd + Q.
|
||||
app.on('window-all-closed', () => {
|
||||
if (process.platform !== 'darwin') {
|
||||
app.quit();
|
||||
}
|
||||
});
|
||||
|
||||
app.on('activate', () => {
|
||||
if (BrowserWindow.getAllWindows().length === 0) {
|
||||
createWindow();
|
||||
}
|
||||
});
|
Before Width: | Height: | Size: 3.8 KiB |
@ -1,43 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#000000" />
|
||||
<meta
|
||||
name="description"
|
||||
content="Web site created using create-react-app"
|
||||
/>
|
||||
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is installed on a
|
||||
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
|
||||
<!--
|
||||
Notice the use of %PUBLIC_URL% in the tags above.
|
||||
It will be replaced with the URL of the `public` folder during the build.
|
||||
Only files inside the `public` folder can be referenced from the HTML.
|
||||
|
||||
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
|
||||
work correctly both with client-side routing and a non-root public URL.
|
||||
Learn how to configure a non-root public URL by running `npm run build`.
|
||||
-->
|
||||
<title>React App</title>
|
||||
</head>
|
||||
<body style="display: block">
|
||||
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||
<div id="root" style="width: 100%; height: 100%"></div>
|
||||
<!--
|
||||
This HTML file is a template.
|
||||
If you open it directly in the browser, you will see an empty page.
|
||||
|
||||
You can add webfonts, meta tags, or analytics to this file.
|
||||
The build step will place the bundled scripts into the <body> tag.
|
||||
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
</body>
|
||||
</html>
|
@ -1,13 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Connection</title>
|
||||
<link rel="stylesheet" href="../../src/css/login.css">
|
||||
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
|
||||
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 9.4 KiB |
@ -1,93 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Accueil</title>
|
||||
<link rel="stylesheet" type="text/css" href="../src/css/main.css">
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="header-left">
|
||||
<img src="img/logo2.png" alt="logo">
|
||||
</div>
|
||||
<div class="header-center">
|
||||
<h2>Hello Prénom Nom !</h2>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<!-- <button>
|
||||
<img src="deconnection.png" alt="Déconnection">
|
||||
<span>Déconnection</span>
|
||||
</button>-->
|
||||
<button class="submit-button">Déconnexion</button>
|
||||
</div>
|
||||
</header>
|
||||
<main>
|
||||
<div id="teams-section">
|
||||
<div id="team-list-h">
|
||||
<h2>Mes équipes</h2>
|
||||
</div>
|
||||
<div id="teams-list">
|
||||
<!-- afficher la liste des équipes -->
|
||||
<div class="team-item">
|
||||
<img src="../src/img/logo2.png">
|
||||
<p class="team-name">Equipe 1</p>
|
||||
</div>
|
||||
<div class="team-item">
|
||||
<img src="../src/img/logo2.png">
|
||||
<p class="team-name">Equipe 2</p>
|
||||
</div>
|
||||
<div class="team-item">
|
||||
<img src="../src/img/logo2.png">
|
||||
<p class="team-name">Equipe 3</p>
|
||||
</div>
|
||||
<div class="team-item">
|
||||
<img src="../src/img/logo2.png">
|
||||
<p class="team-name">Equipe 3</p>
|
||||
</div>
|
||||
<div class="team-item">
|
||||
<img src="../src/img/logo2.png">
|
||||
<p class="team-name">Equipe 3</p>
|
||||
</div>
|
||||
<div class="team-item">
|
||||
<img src="../src/img/logo2.png">
|
||||
<p class="team-name">Equipe 3</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="schema-section">
|
||||
<div id="schema-list-h">
|
||||
<h2>Mes Schémas</h2>
|
||||
</div>
|
||||
<div id="schema-list">
|
||||
<!-- afficher la liste des équipes -->
|
||||
<div class="schema-item">
|
||||
<img src="img/schema.png">
|
||||
<p class="schema-name">Schémas 1</p>
|
||||
</div>
|
||||
<div class="schema-item">
|
||||
<img src="img/schema.png">
|
||||
<p class="schema-name">Schémas 2</p>
|
||||
</div>
|
||||
<div class="schema-item">
|
||||
<img src="img/schema.png">
|
||||
<p class="schema-name">Schémas 3</p>
|
||||
</div>
|
||||
<div class="schema-item">
|
||||
<img src="img/schema.png">
|
||||
<p class="schema-name">Schémas 3</p>
|
||||
</div>
|
||||
<div class="schema-item">
|
||||
<img src="img/schema.png">
|
||||
<p class="schema-name">Schémas 3</p>
|
||||
</div>
|
||||
<div class="schema-item">
|
||||
<img src="img/schema.png">
|
||||
<p class="schema-name">Schémas 3</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
@ -1,25 +0,0 @@
|
||||
{
|
||||
"short_name": "React App",
|
||||
"name": "Create React App Sample",
|
||||
"icons": [
|
||||
{
|
||||
"src": "favicon.ico",
|
||||
"sizes": "64x64 32x32 24x24 16x16",
|
||||
"type": "image/x-icon"
|
||||
},
|
||||
{
|
||||
"src": "logo192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "logo512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": ".",
|
||||
"display": "standalone",
|
||||
"theme_color": "#000000",
|
||||
"background_color": "#ffffff"
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Connection</title>
|
||||
<link rel="stylesheet" href="../../src/css/login.css">
|
||||
<script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
|
||||
<script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,3 +0,0 @@
|
||||
# https://www.robotstxt.org/robotstxt.html
|
||||
User-agent: *
|
||||
Disallow:
|
@ -1,38 +0,0 @@
|
||||
.App {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.App-logo {
|
||||
height: 40vmin;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
.App-logo {
|
||||
animation: App-logo-spin infinite 5s linear;
|
||||
}
|
||||
}
|
||||
|
||||
.App-header {
|
||||
background-color: #282c34;
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: calc(10px + 2vmin);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.App-link {
|
||||
color: #61dafb;
|
||||
}
|
||||
|
||||
@keyframes App-logo-spin {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
import Register from './components/register/Register';
|
||||
import Login from "./components/login/Login";
|
||||
import {MainPage} from "./components/main/Main";
|
||||
import {BrowserRouter, Routes, Route} from "react-router-dom";
|
||||
|
||||
function App() {
|
||||
return (
|
||||
<div className="App">
|
||||
<BrowserRouter>
|
||||
<Routes>
|
||||
<Route path="/" element={<MainPage />} />
|
||||
<Route path="/sign-up" element={<Register />} />
|
||||
<Route path="/sign-in" element={<Login />} />
|
||||
<Route path="/main" element={<MainPage/>} />
|
||||
<Route path="/main/:id" element={<MainPage/>} />
|
||||
<Route path="/*" element={<MainPage />} />
|
||||
</Routes>
|
||||
</BrowserRouter>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
export default App;
|
@ -1,8 +0,0 @@
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import App from './App';
|
||||
|
||||
test('renders learn react link', () => {
|
||||
render(<App />);
|
||||
const linkElement = screen.getByText(/learn react/i);
|
||||
expect(linkElement).toBeInTheDocument();
|
||||
});
|
@ -1,52 +0,0 @@
|
||||
import React from 'react'
|
||||
import '../../css/login.css'
|
||||
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
|
||||
|
||||
export default function Login() {
|
||||
return (
|
||||
<>
|
||||
<div className={"body"}>
|
||||
<div className="container">
|
||||
<form action="/login" method="POST">
|
||||
<h3>Se connecter :</h3>
|
||||
<div className="Input">
|
||||
<span>Identifiant (eMail)</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="envelope" />
|
||||
</div>
|
||||
<input type="input" className="form__field" placeholder="email" name="email" id='email'
|
||||
required/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="Input">
|
||||
<span>Mot de passe</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="lock" />
|
||||
</div>
|
||||
<input type="password" className="form__field" placeholder="mot de passe" name="password"
|
||||
id="password" required/>
|
||||
</div>
|
||||
</div>
|
||||
<label>
|
||||
<input type="checkbox" value="se souvenir de moi" id={"remember me"} name={"remember me"}/>
|
||||
se souvenir de moi
|
||||
</label>
|
||||
<div className="Input">
|
||||
<div className="box">
|
||||
<input type="submit" value="Se connecter"/>
|
||||
</div>
|
||||
</div>
|
||||
<div className={"Href"}>
|
||||
<a href="src/components/login#">J'ai oublier mon mot de passe</a>
|
||||
<a href="/sign-up">Je n'ai pas encore de compte</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
@ -1,76 +0,0 @@
|
||||
import React from 'react'
|
||||
import '../../css/main.css'
|
||||
|
||||
export function MainPage() {
|
||||
return (<>
|
||||
<header>
|
||||
<div className="header-left">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
</div>
|
||||
<div className="header-center">
|
||||
<h2>Bienvenue, Prénom Nom</h2>
|
||||
</div>
|
||||
<div className="header-right">
|
||||
<button className="submit-button">Déconnexion</button>
|
||||
</div>
|
||||
</header>
|
||||
<div id="teams-section">
|
||||
<div id="team-list-h">
|
||||
<h2>Mes équipes</h2>
|
||||
</div>
|
||||
<div id="teams-list">
|
||||
{/*afficher la liste des équipes*/}
|
||||
<div className="team-item">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
<p className="team-name">Equipe 1</p>
|
||||
</div>
|
||||
<div className="team-item">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
<p className="team-name">Equipe 2</p>
|
||||
</div>
|
||||
<div className="team-item">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
<p className="team-name">Equipe 3</p>
|
||||
</div>
|
||||
<div className="team-item">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
<p className="team-name">Equipe 3</p>
|
||||
</div>
|
||||
<div className="team-item">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
<p className="team-name">Equipe 3</p>
|
||||
</div>
|
||||
<div className="team-item">
|
||||
<img src={require("../../img/logo2.png")}/>
|
||||
<p className="team-name">Equipe 3</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="schemas-section">
|
||||
<div id="schemas-list-h">
|
||||
<h2>Mes Schémas</h2>
|
||||
</div>
|
||||
<div id="schemas-list">
|
||||
{/*afficher la liste des Schémas*/}
|
||||
<div className="schemas-item">
|
||||
<img src={require("../../img/Visualiseur.png")}/>
|
||||
<p className="schemas-name">Schéma 1</p>
|
||||
</div>
|
||||
<div className="schemas-item">
|
||||
<img src={require("../../img/Visualiseur.png")}/>
|
||||
<p className="schemas-name">Schéma 2</p>
|
||||
</div>
|
||||
<div className="schemas-item">
|
||||
<img src={require("../../img/Visualiseur.png")}/>
|
||||
<p className="schemas-name">Schéma 3</p>
|
||||
</div>
|
||||
<div className="schemas-item">
|
||||
<img src={require("../../img/Visualiseur.png")}/>
|
||||
<p className="schemas-name">Schéma 3</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
@ -1,81 +0,0 @@
|
||||
import React from 'react'
|
||||
import '../../css/login.css'
|
||||
import { library } from '@fortawesome/fontawesome-svg-core';
|
||||
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import { faLock, faEnvelope, faUser } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
library.add(faLock);
|
||||
library.add(faEnvelope);
|
||||
library.add(faUser);
|
||||
|
||||
export default function Register() {
|
||||
return (
|
||||
<>
|
||||
<div className={"body"}>
|
||||
<div className="container">
|
||||
<form action="/signup" method="POST">
|
||||
<h3>S'inscrire :</h3>
|
||||
<div className="Input">
|
||||
<span>Adresse e-mail</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="envelope" />
|
||||
</div>
|
||||
<input type="input" className="form__field" placeholder="email" name="email" id='email'
|
||||
required/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="Input">
|
||||
<span>Nom</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="user" />
|
||||
</div>
|
||||
<input type="input" placeholder="nom" name="name" id='name' required/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="Input">
|
||||
<span>Prénom</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="user" />
|
||||
</div>
|
||||
<input type="input" placeholder="Prénom" name="forename" id='forename' required/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="Input">
|
||||
<span>Mot de passe</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="lock" />
|
||||
</div>
|
||||
<input type="password" className="form__field" placeholder="mot de passe" name="password"
|
||||
id="password"
|
||||
required/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="Input">
|
||||
<span>Confirmer le mot de passe</span>
|
||||
<div className="box">
|
||||
<div className="icon">
|
||||
<FontAwesomeIcon icon="lock" />
|
||||
</div>
|
||||
<input type="password" className="form__field" placeholder="mot de passe" name="cpassword"
|
||||
id="cpassword" required/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="Input">
|
||||
<div className="box">
|
||||
<input type="submit" value="S'inscrire"/>
|
||||
</div>
|
||||
</div>
|
||||
<a href="/sign-in">J'ai déjà un compte</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
|
||||
)
|
||||
}
|
@ -1,126 +0,0 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Alegreya+Sans:ital,wght@0,100;0,300;0,400;0,500;0,700;0,800;0,900;1,100;1,300;1,400;1,500;1,700;1,800;1,900&display=swap');
|
||||
*{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
font-family: 'Alegreya',sans-serif;
|
||||
}
|
||||
a{
|
||||
text-decoration: none;
|
||||
}
|
||||
.body{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
background-image: url("../img/background-login.jpg");
|
||||
-webkit-backdrop-filter: blur(15px); /* assure la compatibilité avec safari */
|
||||
backdrop-filter: blur(35px);
|
||||
background-color: rgba(182, 182, 182, 0.2);
|
||||
}
|
||||
|
||||
.container{
|
||||
position: relative;
|
||||
width: 400px;
|
||||
min-height: 550px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background: #F2561D;
|
||||
box-shadow: 25px 25px 75px rgba(0,0,0,0.25), 10px 10px 70px rgba(0,0,0,0.5);
|
||||
border-radius: 30px;
|
||||
padding: 50px;
|
||||
}
|
||||
|
||||
form{
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.container h3{
|
||||
color: #0D0D0D;
|
||||
font-weight: 600;
|
||||
font-size: 2em;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
container a:link{
|
||||
color: #0D0D0D;
|
||||
}
|
||||
container a:visited{
|
||||
color: #0D0D0D;
|
||||
}
|
||||
|
||||
container a:hover{
|
||||
color: #0D0D0D;
|
||||
}
|
||||
.Input{
|
||||
position: relative;
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.Input span{
|
||||
display: inline-block;
|
||||
color: #0D0D0D;
|
||||
margin-bottom: 10px;
|
||||
letter-spacing: 1px;
|
||||
font-size: 1.25em;
|
||||
border-left: 4px solid #FF8444;
|
||||
padding-left: 4px;
|
||||
line-height: 1em;
|
||||
}
|
||||
.Input .box{
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.Input .box .icon{
|
||||
position: relative;
|
||||
min-width: 40px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 50%;
|
||||
margin-right: 10px;
|
||||
color: #0D0D0D;
|
||||
font-size: 1.15em;
|
||||
box-shadow: 5px 5px 7px rgba(0,0,0,0.25);
|
||||
}
|
||||
|
||||
.Input .box input{
|
||||
position: relative;
|
||||
width: 100%;
|
||||
border: none;
|
||||
outline: none;
|
||||
padding: 10px 20px;
|
||||
border-radius: 30px;
|
||||
font-size: 0.85em;
|
||||
box-shadow: 5px 5px 7px rgba(0,0,0,0.25);
|
||||
}
|
||||
|
||||
.Input .box input[type="submit"]{
|
||||
background-color: #0D0D0D;
|
||||
box-shadow: 5px 5px 7px rgba(0,0,0,0.25);
|
||||
color: #FF8444;
|
||||
cursor:pointer;
|
||||
letter-spacing: 2px;
|
||||
font-weight: 600;
|
||||
margin-top: 10px;
|
||||
}
|
||||
label{
|
||||
color: #0D0D0D;
|
||||
letter-spacing: 1px;
|
||||
font-size: 0.95em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
label input{
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
a:nth-of-type(1) {
|
||||
display: block;
|
||||
}
|
@ -1,159 +0,0 @@
|
||||
header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 20px 0 20px;
|
||||
background-color: #FF8444;
|
||||
height: 160px;
|
||||
}
|
||||
body{
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
font-family: sans-serif;
|
||||
background: #34495e;
|
||||
}
|
||||
.header-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.header-left img {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
}
|
||||
|
||||
.header-center h2 {
|
||||
font-size: 30px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.submit-button {
|
||||
background-color: #34495e;
|
||||
color: white;
|
||||
padding: 18px 30px;
|
||||
border: none;
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
font-size: 24px;
|
||||
box-shadow: 4px 4px #1B1B1B;
|
||||
}
|
||||
|
||||
#teams-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 60px;
|
||||
background-color: #f2f2f2;
|
||||
border-radius: 10px 10px 10px 10px;
|
||||
box-shadow: 5px 5px #1B1B1B;
|
||||
margin: 10px;
|
||||
|
||||
}
|
||||
|
||||
#teams-section h2 {
|
||||
text-align: center;
|
||||
font-size: 24px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#teams-list {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
overflow: hidden;
|
||||
justify-content: center;
|
||||
}
|
||||
.team-item {
|
||||
padding: 15px 15px 5px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
min-width: 150px;
|
||||
margin: 10px;
|
||||
background-color: #ccc;
|
||||
border-radius: 15px;
|
||||
|
||||
overflow: hidden;
|
||||
box-shadow: 3px 3px #585858;
|
||||
}
|
||||
|
||||
.team-item .team-name {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.team-name {
|
||||
font-size: 18px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.team-item img {
|
||||
border-radius: 15px;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-width: 150px;
|
||||
max-height: 150px;
|
||||
|
||||
box-shadow: 2px 2px #A7A7A7;
|
||||
}
|
||||
|
||||
#schemas-section {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 60px;
|
||||
background-color: #f2f2f2;
|
||||
border-radius: 10px 10px 10px 10px;
|
||||
box-shadow: 5px 5px #1B1B1B;
|
||||
margin: 10px;
|
||||
|
||||
}
|
||||
|
||||
#schemas-section h2 {
|
||||
text-align: center;
|
||||
font-size: 24px;
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#schemas-list {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
overflow: hidden;
|
||||
justify-content: center;
|
||||
}
|
||||
.schemas-item {
|
||||
padding: 15px 15px 5px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
min-width: 150px;
|
||||
margin: 10px;
|
||||
background-color: #ccc;
|
||||
border-radius: 15px;
|
||||
|
||||
overflow: hidden;
|
||||
box-shadow: 3px 3px #585858;
|
||||
}
|
||||
|
||||
.schemas-item .schemas-name {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.schemas-name {
|
||||
font-size: 18px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.schemas-item img {
|
||||
border-radius: 15px;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
max-width: 150px;
|
||||
max-height: 150px;
|
||||
|
||||
box-shadow: 2px 2px #A7A7A7;
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 568 KiB |
Before Width: | Height: | Size: 1.3 MiB |
@ -1,13 +0,0 @@
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
|
||||
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
|
||||
sans-serif;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
|
||||
monospace;
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
import './index.css';
|
||||
import App from './App';
|
||||
import reportWebVitals from './reportWebVitals';
|
||||
|
||||
const root = ReactDOM.createRoot(document.getElementById('root'));
|
||||
root.render(
|
||||
<React.StrictMode>
|
||||
<App />
|
||||
</React.StrictMode>
|
||||
);
|
||||
|
||||
// If you want to start measuring performance in your app, pass a function
|
||||
// to log results (for example: reportWebVitals(console.log))
|
||||
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
|
||||
reportWebVitals();
|
Before Width: | Height: | Size: 2.6 KiB |
@ -1,13 +0,0 @@
|
||||
const reportWebVitals = onPerfEntry => {
|
||||
if (onPerfEntry && onPerfEntry instanceof Function) {
|
||||
import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
|
||||
getCLS(onPerfEntry);
|
||||
getFID(onPerfEntry);
|
||||
getFCP(onPerfEntry);
|
||||
getLCP(onPerfEntry);
|
||||
getTTFB(onPerfEntry);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
export default reportWebVitals;
|
@ -1,5 +0,0 @@
|
||||
// jest-dom adds custom jest matchers for asserting on DOM nodes.
|
||||
// allows you to do things like:
|
||||
// expect(element).toHaveTextContent(/react/i)
|
||||
// learn more: https://github.com/testing-library/jest-dom
|
||||
import '@testing-library/jest-dom';
|
@ -0,0 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<script src="../js/counter.js" type="module"></script>
|
||||
<title>Counter</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div id="page">
|
||||
<label>Compteur : </label>
|
||||
<label id="counter">{0}</label>
|
||||
<button id="increment" onclick="makeIncrement()">Incrémenter</button>
|
||||
<button id="reload" onclick="window.location.reload()">recharger la page</button>
|
||||
</div>
|
||||
|
||||
<script src="/cordova.js"></script>
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 21 KiB |
@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<script src="index.js"></script>
|
||||
<title>hello</title>
|
||||
</head>
|
||||
<body onload="">
|
||||
|
||||
<div id="page">
|
||||
<button onclick="window.location.href = 'counter/index.html'">aller au compteur</button>
|
||||
</div>
|
||||
|
||||
<script src="/cordova.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1 @@
|
||||
export const ADDRESS = "92.132.64.175:950"
|
@ -0,0 +1,27 @@
|
||||
import {ADDRESS} from "./constants.js";
|
||||
|
||||
let counter = 0;
|
||||
|
||||
window.onload = () => initCounter();
|
||||
window.makeIncrement = () => makeIncrement();
|
||||
|
||||
function updateText() {
|
||||
document.getElementById("counter").innerHTML = counter
|
||||
}
|
||||
|
||||
async function makeIncrement() {
|
||||
fetch(`http://${ADDRESS}/counter`, {method: 'POST'})
|
||||
.then(response => { //TODO verify if it's not an error
|
||||
counter++
|
||||
updateText()
|
||||
})
|
||||
}
|
||||
|
||||
function initCounter() {
|
||||
fetch(`http://${ADDRESS}/counter`, {method: 'GET'})
|
||||
.then(response => response.json())
|
||||
.then(json => {
|
||||
counter = json.value
|
||||
updateText()
|
||||
})
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
// Wait for the deviceready event before using any of Cordova's device APIs.
|
||||
// See https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready
|
||||
document.addEventListener('deviceready', onDeviceReady, false);
|
||||
|
||||
function onDeviceReady() {
|
||||
// Cordova is now initialized. Have fun!
|
||||
|
||||
console.log('Running cordova-' + cordova.platformId + '@' + cordova.version);
|
||||
document.getElementById('deviceready').classList.add('ready');
|
||||
}
|