diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 6f3a291..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "liveServer.settings.port": 5501
-}
\ No newline at end of file
diff --git a/css/auth.css b/css/auth.css
index 89750c8..5bb0acb 100644
--- a/css/auth.css
+++ b/css/auth.css
@@ -1,61 +1,165 @@
+/* Copyright © 2023 Entreprise SkamCraft */
+
+/* @font-face {
+ font-family: M42;
+ src: url(/fonts/m42.TTF);
+} */
+
* {
- background-color: #272727;
+ font-family: "Montserrat", sans-serif;
+ font-size: 16px;
+ color: #ffffff;
+ margin: 0;
+ padding: 0;
+ text-decoration: none;
+ list-style: none;
}
body {
- text-align: center;
+ background-color: #212121;
+}
+
+.logo {
display: flex;
justify-content: center;
align-items: center;
- height: 100vh;
}
-.container-auth {
- border-radius: 10px;
+.logo img {
+ width: 80px;
padding: 20px;
+}
+
+.logo h4 {
+ font-size: 30px;
+}
+
+.form {
+ --input-focus: #a37b03;
+ --font-color: #323232;
+ --font-color-sub: #666666;
+ --bg-color: beige;
+ --main-color: black;
+ padding: 20px;
+ background: #eab308;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
text-align: center;
- max-width: 400px;
- width: 100%;
+ gap: 20px;
+ border-radius: 20px;
+ border: 2px solid var(--main-color);
+ box-shadow: 4px 4px var(--main-color);
+ width: 20%;
+ margin: auto;
+ margin-top: 10%;
+}
+
+.title {
+ color: var(--font-color);
+ font-weight: 900;
+ font-size: 20px;
}
-h1 {
- font-weight: bold;
- font-size: 24px;
- line-height: 30px;
+.title span {
+ color: var(--font-color-sub);
font-weight: 600;
+ font-size: 17px;
}
-h2 {
- font-weight: 400;
- font-size: 16px;
- line-height: 20px;
- color: #fa777c;
+.input {
+ width: 250px;
+ height: 40px;
+ border-radius: 5px;
+ border: 2px solid var(--main-color);
+ background-color: var(--bg-color);
+ box-shadow: 4px 4px var(--main-color);
+ font-size: 15px;
+ font-weight: 600;
+ color: var(--font-color);
+ padding: 5px 10px;
+ outline: none;
+}
+
+.input::placeholder {
+ color: var(--font-color-sub);
+ opacity: 0.8;
+}
+
+.input:focus {
+ border: 2px solid var(--input-focus);
}
-label {
- font-weight: 700;
- font-size: 12px;
- color: #b5bac1;
- line-height: 16px;
+.select * {
+ color: var(--main-color);
}
-input {
- color: #fff;
- width: 100%;
- height: 30px;
+.button-confirm {
+ width: 120px;
+ height: 40px;
border-radius: 5px;
- padding: 5px;
+ border: 2px solid var(--main-color);
+ background-color: var(--bg-color);
+ box-shadow: 4px 4px var(--main-color);
+ font-size: 17px;
+ font-weight: 600;
+ color: var(--font-color);
+ cursor: pointer;
}
-button {
- font-weight: 500;
- font-size: 16px;
- line-height: 24px;
- color: #fff;
- margin-top: 10px;
- padding: 10px 20px;
+.button-confirm:active {
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.link-connection {
+ position: relative;
+ display: inline-block;
+}
+
+.link-connection:hover {
cursor: pointer;
- border-radius: 10px;
- width: 100%;
- margin-bottom: 10px;
-}
\ No newline at end of file
+ text-underline-offset: 2px;
+ text-decoration: underline;
+ transform: scale(1.1);
+ transition: 0.3s;
+}
+
+.alert {
+ position: fixed;
+ left: 50%;
+ transform: translateX(-50%);
+ bottom: 10%;
+ border-radius: 0.5rem;
+ border-width: 0.25rem;
+ border-color: #ef4444;
+ background-color: #fee2e2;
+ padding: 1rem;
+ width: 300px;
+ max-width: 90%;
+ text-align: center;
+}
+
+.alert-inner {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ color: #ef4444;
+}
+
+.icon {
+ height: 1.25rem;
+ width: 1.25rem;
+ fill: #d94848;
+}
+
+.message {
+ color: #d94848;
+ font-weight: 500;
+}
+
+.content {
+ margin-top: 0.5rem;
+ font-size: 0.875rem;
+ color: #d94848;
+}
diff --git a/css/contrats.css b/css/contrats.css
deleted file mode 100644
index de9ccf6..0000000
--- a/css/contrats.css
+++ /dev/null
@@ -1,8 +0,0 @@
-#title{
- text-align: center;
- margin-bottom: 100px;
-}
-.card{
- display: grid;
- grid-template-columns: 1fr 1fr 1fr;
-}
\ No newline at end of file
diff --git a/css/global.css b/css/global.css
index 72a1a2d..2521b66 100644
--- a/css/global.css
+++ b/css/global.css
@@ -1,3 +1,5 @@
+/* Copyright © 2023 Entreprise SkamCraft */
+
* {
font-family: "Inter", sans-serif;
box-sizing: border-box;
@@ -12,14 +14,6 @@ html {
flex-direction: column;
}
-.modal-header,
-.modal-title,
-.modal-body,
-#contratID{
- color: black;
- background-color: white;
-}
-
/* Menu */
.menu {
display: flex;
@@ -39,21 +33,19 @@ html {
max-height: 50px;
}
-.page-change-a {
- padding-right: 10px;
+.page-change-button {
+ padding-left: 10px;
}
-.page-change-button a {
+button {
margin: 2px;
color: black;
background-color: white;
border: 2px solid white;
border-radius: 10px;
-
- text-decoration: none;
}
-.page-change-button a:hover {
+button:hover {
border-color: #eab308;
background-color: #eab308;
transition: all 1s;
@@ -63,6 +55,13 @@ main {
flex: 1;
}
+#credits {
+ background-color: white;
+ border: 2px solid white;
+ border-radius: 10px;
+ color: black;
+}
+
/* Footer */
footer {
color: white;
@@ -73,42 +72,3 @@ footer p {
justify-content: center;
margin-bottom: 0px;
}
-
-h5{
- color: red;
-}
-
-/* Canvas system
-#canvas-system {
- border: 1px solid white;
-}
-
-/* Login modal */
-/* #loginModal {
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- padding: 20px;
- border-radius: 8px;
- box-shadow: 0 0 10px black;
- z-index: 1000;
-
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-} */
-
-/* #loginModal p {
- margin-top: -10px;
-}
-
-#loginModal input {
- margin-bottom: 10px;
-} */
-
-
-.card-title{
- color: white;
-}
\ No newline at end of file
diff --git a/fonts/m42.TTF b/fonts/m42.TTF
new file mode 100644
index 0000000..3609477
Binary files /dev/null and b/fonts/m42.TTF differ
diff --git a/img/Skamkraft.png b/img/Skamkraft.png
new file mode 100644
index 0000000..ee79f5a
Binary files /dev/null and b/img/Skamkraft.png differ
diff --git a/img/contrat.jpg b/img/contrat.jpg
deleted file mode 100644
index 2f9b7dc..0000000
Binary files a/img/contrat.jpg and /dev/null differ
diff --git a/img/logo.png b/img/logo.png
deleted file mode 100644
index bd2485d..0000000
Binary files a/img/logo.png and /dev/null differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..b6de163
--- /dev/null
+++ b/index.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SkamCraft
+
+
+
+
+
+
+
+
+
+
diff --git a/js/API/API.js b/js/API/API.js
deleted file mode 100644
index e69de29..0000000
diff --git a/js/Render/renderer.js b/js/Render/renderer.js
deleted file mode 100644
index b5d4fdf..0000000
--- a/js/Render/renderer.js
+++ /dev/null
@@ -1,41 +0,0 @@
-class renderer {
- constructor(canvas) {
- this.canvas = canvas;
- this.ctx = canvas.getContext("2d");
- this.waypoints = [];
- this.ships = [];
- }
-
- drawSystem() {
- const canvas = document.getElementById("canvas");
- let w = canvas.width;
- let h = canvas.height;
- const ctx = canvas.getContext("2d");
-
- this.waypoints.forEach(waypoint => {
- switch (waypoint.type) {
- case "PLANET":
- drawWaypoint(waypoint, ctx, w/2, h/2, 'green');
- break;
- case "ASTEROID":
- drawWaypoint(waypoint, ctx, w/2, h/2, 'blue');
- break;
- case "GAS_GIANT":
- drawWaypoint(waypoint, ctx, w/2, h/2, 'red');
- break;
- }
-
- });
- }
-
- drawShips() {
-
- }
-
- drawWaypoint(wayPoint, ctx, w, h, color) {
- ctx.beginPath();
- ctx.fillStyle = color;
- ctx.arc(wayPoint.x/offset.x + w, wayPoint.y/offset.y + h, 1, 0, 2 * Math.PI);
- ctx.fill();
- }
-}
\ No newline at end of file
diff --git a/js/agents.js b/js/agents.js
deleted file mode 100644
index f5a9e4c..0000000
--- a/js/agents.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright © 2023 Entreprise SpaceTarders
-'use strict'
-import { listSystems, getSystem, listWaypointsInSystem } from "./system.js"
-let token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiUlVCRU4iLCJ2ZXJzaW9uIjoidjIuMS40IiwicmVzZXRfZGF0ZSI6IjIwMjMtMTItMDIiLCJpYXQiOjE3MDIwMzg1ODgsInN1YiI6ImFnZW50LXRva2VuIn0.Brl1Mm9K7bG7kLfWGiU6M0WFvOXy-sV3T_p9-c-v97XMFvsmA85lpdKzeaAyVpOPMF4uM08HqxWb9mEGbag5whX0LPk39B_vjKeQVB9cjpjDsaElQz2HuWIUlB33eOQTyt_LKdQYnY7Jqh2HLopMbzK5sjeaGYzjoWILCuZXjqQkp5b0M_0EvXqCgDn1PpEb_MXSLkTpSQ1xa6hCaGjf6fE3KfTgRxEGpIunAeLRq1edaN4fU7TFU0SWSJZ1HO9CMfxA7eZt274sw4Wiea6LpwlPsGOMf1HFVl2sWdpbdIwdaFHyKpUAHWOGORKBB4B9G77wFLcOukwQMOQYOFL48Q"
-export function getAgent() {
- const settings = {
- async: true,
- crossDomain: true,
- url: 'https://api.spacetraders.io/v2/my/agent',
- method: 'GET',
- headers: {
- Accept: 'application/json',
- Authorization: `Bearer ${token}`
- }
- };
- /*$.ajax(settings).done(function (reponse) {
- $('.main-window').prepend(`
-
- ID du joueur : ${reponse.data.accountId}
- ${reponse.data.symbol}
- ${reponse.data.headquarters}
- ${reponse.data.credits}
- ${reponse.data.startingFaction}
- ${reponse.data.shipCount}
-
- `);
- let metaSystem = reponse.data.headquarters.split("-");
- getSystem(metaSystem[0] + "-" + metaSystem[1]);
- });*/
-}
-export async function createAgent(symbol, faction){
- const settings = {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify({
- symbol: symbol,
- faction: faction,
- }),
- success: function(response){
- symbol = response.data;
- },
- error: function(error){
- console.log(error);
- }
- };
-
-}
\ No newline at end of file
diff --git a/js/contrat.js b/js/contrat.js
deleted file mode 100644
index 283da84..0000000
--- a/js/contrat.js
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright © 2023 Entreprise SpaceTarders
-'use strict'
-let token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiUlVCRU4iLCJ2ZXJzaW9uIjoidjIuMS40IiwicmVzZXRfZGF0ZSI6IjIwMjMtMTItMDIiLCJpYXQiOjE3MDIwMzg1ODgsInN1YiI6ImFnZW50LXRva2VuIn0.Brl1Mm9K7bG7kLfWGiU6M0WFvOXy-sV3T_p9-c-v97XMFvsmA85lpdKzeaAyVpOPMF4uM08HqxWb9mEGbag5whX0LPk39B_vjKeQVB9cjpjDsaElQz2HuWIUlB33eOQTyt_LKdQYnY7Jqh2HLopMbzK5sjeaGYzjoWILCuZXjqQkp5b0M_0EvXqCgDn1PpEb_MXSLkTpSQ1xa6hCaGjf6fE3KfTgRxEGpIunAeLRq1edaN4fU7TFU0SWSJZ1HO9CMfxA7eZt274sw4Wiea6LpwlPsGOMf1HFVl2sWdpbdIwdaFHyKpUAHWOGORKBB4B9G77wFLcOukwQMOQYOFL48Q"
-
-export function CreateCardContrat(contrats){
- $('#contrats').empty()
-
- contrats.forEach(contrat => {
- console.log(contrat);
- const card =
- `
-
-

-
-
${contrat.factionSymbol}
-
${contrat.accepted}
-
-
-
-
- `
-
- $('#contrats').append(card)
- $('#btn-infos').on('click', async function(){
- await getInfosContrat($(this).attr('contratID'));
-
- })
- })
-}
-{/* */}
-export function listContrats(){
- const settings = {
- async: true,
- crossDomain: true,
- url: 'https://api.spacetraders.io/v2/my/contracts',
- method: 'GET',
- headers: {
- Accept: 'application/json',
- Authorization: `Bearer ${token}`
- }
- };
-
- $.ajax(settings).done(function (response) {
- CreateCardContrat(response.data);
- });
-}
-
-export async function getContrat(contratId){
- let contrat;
-
- await $.ajax(`https://api.spacetraders.io/v2/my/contracts/${contratId}`, {
- method: 'GET',
- headers: {
- Accept: 'application/json',
- Authorization: `Bearer ${token}`
- },
- success: function(response){
- contrat = response.data;
-
- },
- error: function(error){
- console.log(error);
- }
- });
-
- return contrat;
-}
-
-export async function getInfosContrat(contratId){
-
- let contrat;
- await $.ajax(`https://api.spacetraders.io/v2/my/contracts/${contratId}`, {
- method: 'GET',
- headers: {
- Accept: 'application/json',
- Authorization: `Bearer ${token}`
- },
- success: function(contrat){
- console.log(contrat);
- window.contratID.innerText = `ID Contrat : ${contratId}`
- window.exampleModalLabel.innerText = `${contrat.factionSymbol}`
-
-
- },
- error: function(error){
- console.log(error);
- }
- });
-
- return contrat;
-
-}
-
-
-
-
diff --git a/js/faction.js b/js/faction.js
deleted file mode 100644
index 8871f13..0000000
--- a/js/faction.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright © 2023 Entreprise SpaceTarders
-'use strict'
-let token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiUlVCRU4iLCJ2ZXJzaW9uIjoidjIuMS40IiwicmVzZXRfZGF0ZSI6IjIwMjMtMTItMDIiLCJpYXQiOjE3MDIwMzg1ODgsInN1YiI6ImFnZW50LXRva2VuIn0.Brl1Mm9K7bG7kLfWGiU6M0WFvOXy-sV3T_p9-c-v97XMFvsmA85lpdKzeaAyVpOPMF4uM08HqxWb9mEGbag5whX0LPk39B_vjKeQVB9cjpjDsaElQz2HuWIUlB33eOQTyt_LKdQYnY7Jqh2HLopMbzK5sjeaGYzjoWILCuZXjqQkp5b0M_0EvXqCgDn1PpEb_MXSLkTpSQ1xa6hCaGjf6fE3KfTgRxEGpIunAeLRq1edaN4fU7TFU0SWSJZ1HO9CMfxA7eZt274sw4Wiea6LpwlPsGOMf1HFVl2sWdpbdIwdaFHyKpUAHWOGORKBB4B9G77wFLcOukwQMOQYOFL48Q"
-export async function listFactions(limit, pages){
- let factions = [];
-
- for(let page = 1; page <= pages; page++){
- await $.ajax('https://api.spacetraders.io/v2/factions', {
- method: 'GET',
- headers: {
- Accept: 'application/json',
- },
- data: {
- limit: limit,
- page: page
- },
- success: function(response){
- response.data.forEach(faction => {
- factions.push(faction);
- });
- },
- error: function(error){
- console.log(error);
- }
- });
- }
-
- return factions;
-}
-
-export async function getFaction(symbol){
- let faction;
-
- await $.ajax(`https://api.spacetraders.io/v2/factions/${symbol}`, {
- method: 'GET',
- headers: {
- Accept: 'application/json'
- },
- success: function(response){
- faction = response.data;
-
- },
- error: function(error){
- console.log(error);
- }
- });
-
- return faction;
-}
diff --git a/js/main.js b/js/main.js
deleted file mode 100644
index c563ab6..0000000
--- a/js/main.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright © 2023 Entreprise SpaceTarders
-'use strict'
-import { createAgent, getAgent } from "./agents.js";
-import { listSystems, getSystem, listWaypointsInSystem } from "./system.js";
-import {getFaction, listFactions} from "./faction.js";
-import {getContrat, listContrats, CreateCardContrat, getInfosContrat} from "./contrat.js";
-
-
-
-let token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiUlVCRU4iLCJ2ZXJzaW9uIjoidjIuMS40IiwicmVzZXRfZGF0ZSI6IjIwMjMtMTItMDIiLCJpYXQiOjE3MDIwMzg1ODgsInN1YiI6ImFnZW50LXRva2VuIn0.Brl1Mm9K7bG7kLfWGiU6M0WFvOXy-sV3T_p9-c-v97XMFvsmA85lpdKzeaAyVpOPMF4uM08HqxWb9mEGbag5whX0LPk39B_vjKeQVB9cjpjDsaElQz2HuWIUlB33eOQTyt_LKdQYnY7Jqh2HLopMbzK5sjeaGYzjoWILCuZXjqQkp5b0M_0EvXqCgDn1PpEb_MXSLkTpSQ1xa6hCaGjf6fE3KfTgRxEGpIunAeLRq1edaN4fU7TFU0SWSJZ1HO9CMfxA7eZt274sw4Wiea6LpwlPsGOMf1HFVl2sWdpbdIwdaFHyKpUAHWOGORKBB4B9G77wFLcOukwQMOQYOFL48Q"
-
-$(document).ready(async function(){
- let contrat = listContrats()
- if (document.URL.includes('contrats.html')) {
-
- return;
- }
-
-})
-
-
-
-
-
-
-
-
-
diff --git a/js/system.js b/js/system.js
deleted file mode 100644
index 64ade18..0000000
--- a/js/system.js
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright © 2023 Entreprise SpaceTarders
-'use strict'
-let token = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiUlVCRU4iLCJ2ZXJzaW9uIjoidjIuMS40IiwicmVzZXRfZGF0ZSI6IjIwMjMtMTItMDIiLCJpYXQiOjE3MDIwMzg1ODgsInN1YiI6ImFnZW50LXRva2VuIn0.Brl1Mm9K7bG7kLfWGiU6M0WFvOXy-sV3T_p9-c-v97XMFvsmA85lpdKzeaAyVpOPMF4uM08HqxWb9mEGbag5whX0LPk39B_vjKeQVB9cjpjDsaElQz2HuWIUlB33eOQTyt_LKdQYnY7Jqh2HLopMbzK5sjeaGYzjoWILCuZXjqQkp5b0M_0EvXqCgDn1PpEb_MXSLkTpSQ1xa6hCaGjf6fE3KfTgRxEGpIunAeLRq1edaN4fU7TFU0SWSJZ1HO9CMfxA7eZt274sw4Wiea6LpwlPsGOMf1HFVl2sWdpbdIwdaFHyKpUAHWOGORKBB4B9G77wFLcOukwQMOQYOFL48Q"
-const lienSysteme = 'https://api.spacetraders.io/v2/systems'
-
-export async function listSystems(limit, pages){
- let systems = [];
-
- for(let page = 1; page <= pages; page++){
- await $.ajax('https://api.spacetraders.io/v2/systems/', {
- method: 'GET',
- headers: {
- Accept: 'application/json',
- },
- data: {
- limit: limit,
- page: page
- },
- success: function(response){
- response.data.forEach(sytem => {
- systems.push(sytem);
- });
- },
- error: function(error){
- console.log(error);
- }
- });
- }
-
- return systems;
-}
-
-export async function getSystem(systemSymbol){
- let system;
-
- await $.ajax(`https://api.spacetraders.io/v2/systems/${systemSymbol}`, {
- method: 'GET',
- headers: {
- Accept: 'application/json'
- },
- success: function(response){
- system = response.data;
-
- },
- error: function(error){
- console.log(error);
- }
- });
-
- return system;
-}
-
-export async function listWaypointsInSystem(limit, pages, systemSymbol){
- let waypoints = [];
-
- for(let page = 1; page <= pages; page++){
- await $.ajax(`https://api.spacetraders.io/v2/systems/${systemSymbol}/waypoints`, {
- method: 'GET',
- headers: {
- Accept: 'application/json',
- },
- data: {
- limit: limit,
- page: page
- },
- success: function(response){
- response.data.forEach(waypoint => {
- waypoints.push(waypoint);
- });
- },
- error: function(error){
- console.log(error);
- }
- });
- }
-
- return waypoints;
-}
-
diff --git a/login.html b/login.html
new file mode 100644
index 0000000..053d1c7
--- /dev/null
+++ b/login.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+ Skamkraft
+
+
+
+
+
+
+
+
+
+
+
+
+

+
Skamkraft
+
+
+
+
+
+
+
+
+
Quelque chose s'est mal passé
+
+
+
+
+
+
diff --git a/register.html b/register.html
new file mode 100644
index 0000000..36aebfa
--- /dev/null
+++ b/register.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+ Skamkraft
+
+
+
+
+
+
+
+
+
+
+
+
+

+
Skamkraft
+
+
+
+
+
+
+
+
+
Quelque chose s'est mal passé
+
+
+
+
+
+
diff --git a/scripts/api.js b/scripts/api.js
new file mode 100644
index 0000000..82263a1
--- /dev/null
+++ b/scripts/api.js
@@ -0,0 +1,125 @@
+// Copyright © 2023 Entreprise SkamKraft
+
+"use strict";
+
+const spacetradersApiUrl = "https://api.spacetraders.io/v2/";
+
+const REQUEST = async (url, method, headers, data) => {
+ try {
+ const response = await $.ajax(url, {
+ method,
+ headers,
+ data,
+ });
+
+ return response.data;
+ } catch (error) {
+ return error;
+ }
+};
+
+export default {
+ Agent: {
+ create: (symbol, faction) => {
+ const url = `${spacetradersApiUrl}register`;
+ const headers = { "Content-Type": "application/json" };
+ const data = JSON.stringify({ symbol, faction });
+
+ return REQUEST(url, "POST", headers, data);
+ },
+
+ get: (token) => {
+ const url = `${spacetradersApiUrl}my/agent`;
+ const headers = {
+ Accept: "application/json",
+ Authorization: `Bearer ${token}`,
+ };
+
+ return REQUEST(url, "GET", headers);
+ },
+
+ getPublic: (symbol) => {
+ const url = `${spacetradersApiUrl}agents/${symbol}`;
+ const headers = { Accept: "application/json" };
+
+ return REQUEST(url, "GET", headers);
+ },
+
+ list: (limit, page) => {
+ const url = `${spacetradersApiUrl}agents`;
+ const headers = { Accept: "application/json" };
+ const data = { limit, page };
+
+ return REQUEST(url, "GET", headers, data);
+ },
+ },
+
+ Faction: {
+ list: (limit, page) => {
+ const url = `${spacetradersApiUrl}factions`;
+ const headers = { Accept: "application/json" };
+ const data = { limit, page };
+
+ return REQUEST(url, "GET", headers, data);
+ },
+ },
+
+ System: {
+ list: (limit, page) => {
+ const url = `${spacetradersApiUrl}systems/`;
+ const headers = { Accept: "application/json" };
+ const data = { limit, page };
+
+ return REQUEST(url, "GET", headers, data);
+ },
+
+ get: (symbol) => {
+ const url = `${spacetradersApiUrl}systems/${symbol}`;
+ const headers = { Accept: "application/json" };
+
+ return REQUEST(url, "GET", headers);
+ },
+ },
+
+ Waypoint: {
+ list: (limit, page, systemSymbol) => {
+ const url = `${spacetradersApiUrl}systems/${systemSymbol}/waypoints`;
+ const headers = { Accept: "application/json" };
+ const data = { limit, page };
+
+ return REQUEST(url, "GET", headers, data);
+ },
+
+ get: (systemSymbol, waypointSymbol, token) => {
+ const url = `${spacetradersApiUrl}systems/${systemSymbol}/waypoints/${waypointSymbol}/market`;
+ const headers = {
+ Accept: "application/json",
+ Authorization: `Bearer ${token}`,
+ };
+
+ return REQUEST(url, "GET", headers);
+ },
+ },
+
+ Contract: {
+ list: (token) => {
+ const url = `${spacetradersApiUrl}my/contracts/`;
+ const headers = {
+ Accept: "application/json",
+ Authorization: `Bearer ${token}`,
+ };
+
+ return REQUEST(url, "GET", headers);
+ },
+
+ get: async (contratId, token) => {
+ const url = `${spacetradersApiUrl}my/contracts/${contratId}`;
+ const headers = {
+ Accept: "application/json",
+ Authorization: `Bearer ${token}`,
+ };
+
+ return REQUEST(url, "GET", headers);
+ },
+ },
+};
diff --git a/scripts/auth.js b/scripts/auth.js
new file mode 100644
index 0000000..5fd96b6
--- /dev/null
+++ b/scripts/auth.js
@@ -0,0 +1,83 @@
+// Copyright © 2023 Entreprise SkamCraft
+
+"use strict";
+
+import SpaceTraders from "./api.js";
+
+const $inputToken = $("#input-token");
+const $inputSymbol = $("#input-symbol");
+const $inputFaction = $("#input-faction");
+const $alert = document.querySelector("#box-alert");
+const $error = $("#error-message");
+
+const showError = (message) => {
+ $alert.removeAttribute("hidden");
+ $error.text(message);
+};
+
+const redirectToIndex = () => {
+ window.location.href = "/index.html";
+};
+
+export default {
+ login: async () => {
+ const token = $inputToken.val();
+
+ if (!token) {
+ showError("Token manquant");
+ return;
+ }
+
+ try {
+ await SpaceTraders.Agent.get(token);
+ localStorage.setItem("token", token);
+ redirectToIndex();
+ } catch {
+ showError("Token invalide");
+ }
+ },
+
+ register: async () => {
+ const symbol = $inputSymbol.val();
+
+ if (!symbol) {
+ showError("Symbol manquant");
+ return;
+ }
+
+ const faction = $inputFaction.val();
+
+ console.log(faction);
+
+ if (!faction) {
+ showError("Faction manquante");
+ return;
+ }
+
+ try {
+ const agent = await SpaceTraders.Agent.create(symbol, faction);
+
+ if (agent.token !== undefined) {
+ localStorage.setItem("token", agent.token);
+ redirectToIndex();
+ } else {
+ showError("Symbol ou faction invalide");
+ }
+ } catch {
+ showError("Erreur lors de l'inscription");
+ }
+ },
+
+ isLogin: async () => {
+ const token = localStorage.getItem("token");
+
+ if (!token) return false;
+
+ try {
+ await SpaceTraders.Agent.get(token);
+ return true;
+ } catch {
+ return false;
+ }
+ },
+};
diff --git a/scripts/main.js b/scripts/main.js
new file mode 100644
index 0000000..f53bd51
--- /dev/null
+++ b/scripts/main.js
@@ -0,0 +1,76 @@
+// Copyright © 2023 Entreprise SkamCraft
+
+"use strict";
+
+import AUTH from "./auth.js";
+import SpaceTraders from "./api.js";
+
+$(document).ready(async function () {
+ //Auth
+ if (document.URL.includes("login.html")) {
+ $("#btn-login").on("click", () => {
+ AUTH.login();
+ });
+ return;
+ }
+
+ if (document.URL.includes("register.html")) {
+ const factions = await SpaceTraders.Faction.list(10, 1);
+ factions.forEach((faction) => {
+ const option = ``;
+ $("#group-faction").append(option);
+ });
+
+ $("#btn-register").on("click", () => {
+ AUTH.register();
+ });
+ return;
+ }
+
+ if (!(await AUTH.isLogin())) window.location.href = "login.html";
+
+ agent();
+
+ //Buttons
+ $("#btn-contract").on("click", () => {
+ contract();
+ });
+ $("#btn-faction").on("click", () => {});
+ $("#btn-ship").on("click", () => {});
+ $("#btn-system").on("click", () => {});
+ $("#btn-logout").on("click", () => {
+ logout();
+ });
+});
+
+function loadPage(page) {
+ $("main").load(`templates/${page}.html`);
+}
+
+function logout() {
+ localStorage.removeItem("token");
+ window.location.href = "login.html";
+}
+
+async function agent() {
+ let token = localStorage.getItem("token");
+ let agent = await SpaceTraders.Agent.get(token);
+
+ $("#credits").text(agent.credits.toLocaleString() + " $");
+}
+
+async function contract() {
+ const token = localStorage.getItem("token");
+ const contracts = await SpaceTraders.Contract.list(token);
+
+ $("main").empty();
+
+ contracts.forEach((contract) => {
+ let card = `;`;
+ $("main").append(card);
+ });
+}
diff --git a/templates/contract.html b/templates/contract.html
new file mode 100644
index 0000000..ee9d8d9
--- /dev/null
+++ b/templates/contract.html
@@ -0,0 +1 @@
+
diff --git a/templates/contrats.html b/templates/contrats.html
deleted file mode 100644
index f088d0c..0000000
--- a/templates/contrats.html
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpaceTraders
-
-
-
-
-
- Mes contrats
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/templates/faction.html b/templates/faction.html
new file mode 100644
index 0000000..c5b5593
--- /dev/null
+++ b/templates/faction.html
@@ -0,0 +1 @@
+
diff --git a/templates/index.html b/templates/index.html
deleted file mode 100644
index ab370a3..0000000
--- a/templates/index.html
+++ /dev/null
@@ -1,55 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SpaceTraders
-
-
-
-
- Page accueil
-
-
-
-
diff --git a/token b/token
deleted file mode 100644
index 7ac72ef..0000000
--- a/token
+++ /dev/null
@@ -1 +0,0 @@
-"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiUlVCRU4iLCJ2ZXJzaW9uIjoidjIuMS40IiwicmVzZXRfZGF0ZSI6IjIwMjMtMTItMDIiLCJpYXQiOjE3MDIwMzg1ODgsInN1YiI6ImFnZW50LXRva2VuIn0.Brl1Mm9K7bG7kLfWGiU6M0WFvOXy-sV3T_p9-c-v97XMFvsmA85lpdKzeaAyVpOPMF4uM08HqxWb9mEGbag5whX0LPk39B_vjKeQVB9cjpjDsaElQz2HuWIUlB33eOQTyt_LKdQYnY7Jqh2HLopMbzK5sjeaGYzjoWILCuZXjqQkp5b0M_0EvXqCgDn1PpEb_MXSLkTpSQ1xa6hCaGjf6fE3KfTgRxEGpIunAeLRq1edaN4fU7TFU0SWSJZ1HO9CMfxA7eZt274sw4Wiea6LpwlPsGOMf1HFVl2sWdpbdIwdaFHyKpUAHWOGORKBB4B9G77wFLcOukwQMOQYOFL48Q"
\ No newline at end of file