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 + + + + + + + + + + + + + +
+
+ Bienvenue sur Skamkraft,
Entrez votre token pour continuer +
+ + + +
+ + + + 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 + + + + + + + + + + + + + +
+
+ Bienvenue sur Skamkraft,
+ Entrez votre symbol pour continuer +
+ + + + +
+ + + + 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 = `
+
+

${contract.id}

+
+
;`; + $("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