initializing electron and react

dev
Override-6 2 years ago
parent 49ed2e0cec
commit 9923af88a8

27
.gitignore vendored

@ -1,12 +1,23 @@
.DS_Store # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# Generated by package manager # testing
node_modules/ /coverage
*ionicons
# Generated by Cordova
/plugins/
/platforms/
# production
/build
.idea # misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

5
.idea/.gitignore vendored

@ -0,0 +1,5 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="ASK" />
<option name="description" value="" />
</component>
</project>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/application.iml" filepath="$PROJECT_DIR$/.idea/application.iml" />
</modules>
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PrettierConfiguration">
<option name="myFilesPattern" value="" />
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -1,9 +1,70 @@
# Application Basket # Getting Started with Create React App
* Notre projet est une application qui permet a des clubs de basket d'envoyer des tactiques de jeux à leurs equipes. This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
* Editeur et visualisateur interne des tactiques de jeux.
* Les administrateurs (coachs) d'une equipe peuvent diffuser leurs tactiques à leurs élèves.
* Les élèves peuvent aussi proposer leurs propres tactiques que les coachs peuvent à leurs tour approuver.
## Contribuer ## Available Scripts
Dans le code ou dans la documentation, merci d'ecrire en anglais si possible
In the project directory, you can run:
### `npm start`
Runs the app in the development mode.\
Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
The page will reload when you make changes.\
You may also see any lint errors in the console.
### `npm test`
Launches the test runner in the interactive watch mode.\
See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
### `npm run build`
Builds the app for production to the `build` folder.\
It correctly bundles React in production mode and optimizes the build for the best performance.
The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!
See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you can't go back!**
If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
## Learn More
You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
To learn React, check out the [React documentation](https://reactjs.org/).
### Code Splitting
This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
### Analyzing the Bundle Size
This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
### Making a Progressive Web App
This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
### Advanced Configuration
This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
### Deployment
This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
### `npm run build` fails to minify
This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)

@ -1 +0,0 @@
/home/maxime/Projects/WebstormProjects/tactique-basket-app/platforms/browser

@ -1,15 +0,0 @@
<?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,55 +0,0 @@
kind: pipeline
type: docker
name: Android
steps:
- name: Deliver
image: override6/tbasket-frontend:latest
workspace:
path: /src/android
environment:
SSH_PRIVATE_KEY:
from_secret: SSH_PRIVATE
SSH_PUBLIC_KEY:
from_secret: SSH_PUBLIC
commands:
- bash drone/deliver.sh android
- bash drone/android-sign.sh
---
kind: pipeline
type: docker
name: Electron
steps:
- name: Deliver
image: override6/tbasket-frontend:latest
workspace:
path: /src/electron
environment:
SSH_PRIVATE_KEY:
from_secret: SSH_PRIVATE
SSH_PUBLIC_KEY:
from_secret: SSH_PUBLIC
commands:
- bash drone/deliver.sh electron
---
kind: pipeline
type: docker
name: Apache
steps:
- name: Deliver
image: override6/tbasket-frontend:latest
workspace:
path: /src/web
environment:
SSH_PRIVATE_KEY:
from_secret: SSH_PRIVATE
SSH_PUBLIC_KEY:
from_secret: SSH_PUBLIC
commands:
- bash drone/deliver.sh browser

@ -1,15 +0,0 @@
#!/usr/bin/bash
apt install apksigner > /dev/null
if [ $DRONE_BRANCH = "dev" ]; then
ARTIFACT_TYPE="debug"
elif [ $DRONE_BRANCH = "production" ]; then
ARTIFACT_TYPE="release"
fi
apksigner sign --ks /home/maxime/server/TBasket/application/android/tbasket.keystore app-$ARTIFACT_TYPE-unsigned.apk &&
mv app-$ARTIFACT_TYPE-unsigned.apk tbasket-$ARTIFACT_TYPE.apk &&
echo "apk has been signed."
echo "android-sign.sh done."

@ -1,63 +0,0 @@
#!/usr/bin/bash
TYPE="$1"
case "$DRONE_BRANCH" in
"production")
OPTIONS="--release"
;;
"")
echo '$DRONE_BRANCH not set' >&2
exit 1
;;
*)
OPTIONS="--debug"
;;
esac
curl https://codefirst.iut.uca.fr/git/Tactique-basket/Backend/raw/branch/dev/drone/prepare-deliver.sh > /tmp/prepare-deliver.sh
source /tmp/prepare-deliver.sh
SERV_DIR="$DIR/application/$TYPE"
case "$TYPE" in
"android")
OPTIONS="$OPTIONS -- --packageType=apk"
OUT_DIR="platforms/android/app/build/outputs/apk"
#install gradle
wget -q https://services.gradle.org/distributions/gradle-7.5.1-bin.zip -P /tmp
unzip -d /opt/gradle /tmp/gradle-*.zip > /dev/null
export GRADLE_HOME=/opt/gradle/gradle-7.5.1/
echo $GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin
;;
"browser")
OUT_DIR="platforms/browser/www/"
if [ "$DRONE_BRANCH" = "production" ]; then
SERV_DIR="public_html/basket"
else SERV_DIR="/server/apache/TBasket/"
fi
;;
"electron")
OUT_DIR="platforms/electron/build"
;;
*)
echo "unrecognized platform $TYPE." >&2
;;
esac
#install cordova
cordova platform add "$TYPE" || exit 1
cordova build "$TYPE" $OPTIONS || exit 1
echo "delivering outputs on server"
echo "making delivery onto '$USER@$IP:$SERV_DIR'"
rsync -avz -I \
--rsync-path="mkdir -p \"$SERV_DIR\" && rsync" \
-e "ssh -o StrictHostKeyChecking=no" \
--delete "$OUT_DIR" "$USER@$IP:/$SERV_DIR"

@ -1,4 +0,0 @@
FROM alvrme/alpine-android:android-32-jdk11
RUN apk update \
&& apk add npm openssh-client tree rsync \
&& npm install -g cordova

22402
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,28 +1,47 @@
{ {
"name": "org.tbasket.app", "name": "tbasket",
"displayName": "TactiqueBasketApplication", "version": "0.1.0",
"version": "1.0.0", "private": true,
"description": "A sample Apache Cordova application that responds to the deviceready event.", "main": "public/electron.js",
"main": "index.js", "dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "^5.0.1",
"web-vitals": "^2.1.4"
},
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "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 ."
}, },
"keywords": [ "eslintConfig": {
"ecosystem:cordova" "extends": [
], "react-app",
"author": "Apache Cordova Team", "react-app/jest"
"license": "Apache-2.0", ]
"devDependencies": {
"cordova-android": "^11.0.0",
"cordova-browser": "^6.0.0",
"cordova-electron": "^3.1.0"
}, },
"cordova": { "browserslist": {
"platforms": [ "production": [
"electron", ">0.2%",
"browser", "not dead",
"android" "not op_mini all"
], ],
"plugins": {} "development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"concurrently": "^7.6.0",
"electron": "^23.0.0",
"electron-is-dev": "^2.0.0",
"wait-on": "^7.0.1"
} }
} }

@ -0,0 +1,47 @@
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();
}
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -0,0 +1,43 @@
<!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>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

@ -0,0 +1,25 @@
{
"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"
}

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

@ -0,0 +1,38 @@
.App {
text-align: center;
}
.App-logo {
height: 40vmin;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s 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);
}
}

@ -0,0 +1,25 @@
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;

@ -0,0 +1,8 @@
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();
});

@ -0,0 +1,13 @@
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;
}

@ -0,0 +1,17 @@
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();

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,13 @@
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;

@ -0,0 +1,5 @@
// 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';

@ -1,19 +0,0 @@
<!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>

@ -1,110 +0,0 @@
/*
* 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.
*/
* {
-webkit-tap-highlight-color: rgba(0,0,0,0); /* make transparent link selection, adjust last value opacity 0 to 1.0 */
}
body {
-webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */
-webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */
-webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */
background-color:#E4E4E4;
background-image:linear-gradient(to bottom, #A7A7A7 0%, #E4E4E4 51%);
font-family: system-ui, -apple-system, -apple-system-font, 'Segoe UI', 'Roboto', sans-serif;
font-size:12px;
height:100vh;
margin:0px;
padding:0px;
/* Padding to avoid the "unsafe" areas behind notches in the screen */
padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
text-transform:uppercase;
width:100%;
}
/* Portrait layout (default) */
.app {
background:url(../img/logo.png) no-repeat center top; /* 170px x 200px */
position:absolute; /* position in the center of the screen */
left:50%;
top:50%;
height:50px; /* text area height */
width:225px; /* text area width */
text-align:center;
padding:180px 0px 0px 0px; /* image height is 200px (bottom 20px are overlapped with text) */
margin:-115px 0px 0px -112px; /* offset vertical: half of image height and text area height */
/* offset horizontal: half of text area width */
}
/* Landscape layout (with min-width) */
@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
.app {
background-position:left center;
padding:75px 0px 75px 170px; /* padding-top + padding-bottom + text area = image height */
margin:-90px 0px 0px -198px; /* offset vertical: half of image height */
/* offset horizontal: half of image width and text area width */
}
}
h1 {
font-size:24px;
font-weight:normal;
margin:0px;
overflow:visible;
padding:0px;
text-align:center;
}
.event {
border-radius:4px;
color:#FFFFFF;
font-size:12px;
margin:0px 30px;
padding:2px 0px;
}
.event.listening {
background-color:#333333;
display:block;
}
.event.received {
background-color:#4B946A;
display:none;
}
#deviceready.ready .event.listening { display: none; }
#deviceready.ready .event.received { display: block; }
@keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}
.blink {
animation:fade 3000ms infinite;
-webkit-animation:fade 3000ms infinite;
}
@media screen and (prefers-color-scheme: dark) {
body {
background-image:linear-gradient(to bottom, #585858 0%, #1B1B1B 51%);
}
}

@ -1,131 +0,0 @@
header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px 0 20px;
background-color: #FF8444;
height: 80px;
}
body{
margin: 0;
padding: 0;
font-family: sans-serif;
background: #34495e;
}
.header-left {
display: flex;
align-items: center;
}
.header-left img {
width: 50px;
height: 50px;
}
.header-center h2 {
margin: 0;
}
.submit-button {
background-color: #34495e;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
float: right;
font-size: 16px;
box-shadow: 3px 3px #1B1B1B;
}
#teams-section {
display: flex;
flex-direction: column;
padding: 20px;
background-color: #f2f2f2;
border-radius: 0 0 10px 10px;
box-shadow: 5px 5px #1B1B1B;
}
#teams-section h2 {
text-align: center;
font-size: 24px;
margin-top: 0;
margin-bottom: 5px;
}
#schemas-section {
padding: 20px;
background-color: #f2f2f2;
border-radius: 10px;
margin-top: 20px;
box-shadow: 5px 5px #1B1B1B;
}
#schemas-section h2 {
text-align: center;
font-size: 24px;
margin-bottom: 20px;
}
.teams-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
#teams-list {
display: flex;
flex-direction: row;
flex-wrap: wrap;
overflow: hidden;
}
.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-item {
display: block;
width: calc(100% * (1/4) - 10px - 1px);
margin: 10px;
text-align: center;
width: 200px;
height: 200px;
float: left;
margin: 10px;
}
*/
.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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

@ -1,80 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Accueil</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
<header>
<div class="header-left">
<img src="logo2.png" alt="logo">
</div>
<div class="header-center">
<h2>Bienvenue, 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="img/logo2.png">
<p class="team-name">Equipe 1</p>
</div>
<div class="team-item">
<img src="img/logo2.png">
<p class="team-name">Equipe 2</p>
</div>
<div class="team-item">
<img src="img/logo2.png">
<p class="team-name">Equipe 3</p>
</div>
<div class="team-item">
<img src="img/logo2.png">
<p class="team-name">Equipe 3</p>
</div>
<div class="team-item">
<img src="img/logo2.png">
<p class="team-name">Equipe 3</p>
</div>
<div class="team-item">
<img src="img/logo2.png">
<p class="team-name">Equipe 3</p>
</div>
</div>
</div>
</div>
<div id="schemas-section">
<h2>Mes schémas</h2>
<div id="schemas-list">
<!-- afficher la liste des schémas
<div class="shema-item">
<img src="logo.png">
<p class="shema-name">Shéma 1</p>
</div>
<div class="shema-item">
<img src="logo2.png">
<p class="shema-name">Shéma 2</p>
</div>
<div class="shema-item">
<img src="logo2.png">
<p class="shema-name">Shéma 3</p>
</div>
-->
</div>
</div>
</main>
</body>
</html>

@ -1 +0,0 @@
export const ADDRESS = "92.132.64.175:950"

@ -1,29 +0,0 @@
/*
* 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');
}

@ -1,46 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Connection</title>
<link rel="stylesheet" href="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>
<div class="container">
<form action="/login" method="POST">
<h3>Se connecter :</h3>
<div class="Input">
<span>Identifiant (eMail)</span>
<div class="box">
<div class="icon">
<ion-icon name="person-circle-outline"></ion-icon>
</div>
<input type="input" class="form__field" placeholder="email" name="email" id='email' required />
</div>
</div>
<div class="Input">
<span>Mot de passe</span>
<div class="box">
<div class="icon">
<ion-icon name="lock-closed"></ion-icon>
</div>
<input type="password" class="form__field" placeholder="mot de passe" name="password" id="password" required>
</div>
</div>
<label>
<input type="checkbox">Se souvenir de moi
</label>
<div class="Input">
<div class="box">
<input type="submit" value="Se connecter" >
</div>
</div>
<a href="#" >J'ai oublier mon mot de passe</a>
<br><a href="../register/index.html" >Je n'ai pas encore de compte</a>
</form>
</div>
</body>
</html>

@ -1,123 +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;
}

@ -1,72 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Connection</title>
<link rel="stylesheet" href="../login/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>
<div class="container">
<form action="/register" method="POST">
<h3>S'inscrire :</h3>
<div class="Input">
<span>Adresse e-mail</span>
<div class="box">
<div class="icon">
<ion-icon name="person-circle-outline"></ion-icon>
</div>
<input type="input" class="form__field" placeholder="email" name="email" id='email' required />
</div>
</div>
<div class="Input">
<span>Nom</span>
<div class="box">
<div class="icon">
<ion-icon name="person-circle-outline"></ion-icon>
</div>
<input type="input" placeholder="nom" name="name" id='name' required />
</div>
</div>
<div class="Input">
<span>Prénom</span>
<div class="box">
<div class="icon">
<ion-icon name="person-circle-outline"></ion-icon>
</div>
<input type="input" placeholder="Prénom" name="forename" id='forename' required />
</div>
</div>
<div class="Input">
<span>Mot de passe</span>
<div class="box">
<div class="icon">
<ion-icon name="lock-closed"></ion-icon>
</div>
<input type="password" class="form__field" placeholder="mot de passe" name="password" id="password" required>
</div>
</div>
<div class="Input">
<span>Confirmer le mot de passe</span>
<div class="box">
<div class="icon">
<ion-icon name="lock-closed"></ion-icon>
</div>
<input type="password" class="form__field" placeholder="mot de passe" name="cpassword" id="cpassword" required>
</div>
</div>
<label>
<input type="checkbox">Se souvenir de moi
</label>
<div class="Input">
<div class="box">
<input type="submit" value="S'inscrire" >
</div>
</div>
<br><a href="../login/index.html">J'ai déjà un compte</a>
</form>
</div>
</body>
</html>
Loading…
Cancel
Save