merge : new database.
This commit is contained in:
commit
a9ea4f44e0
@ -3,6 +3,7 @@ import { Model } from '../types/model';
|
|||||||
import { Either, eitherLeft, eitherRight, Pair, createPair } from '../utils/utils';
|
import { Either, eitherLeft, eitherRight, Pair, createPair } from '../utils/utils';
|
||||||
import { Piece } from '../types/piece';
|
import { Piece } from '../types/piece';
|
||||||
import { getPiece } from './pieces.service';
|
import { getPiece } from './pieces.service';
|
||||||
|
import memberService from './member.service';
|
||||||
|
|
||||||
type DBModel = {
|
type DBModel = {
|
||||||
id_modele: number;
|
id_modele: number;
|
||||||
@ -37,7 +38,7 @@ async function db2Model(data: DBModel) {
|
|||||||
id: data.id_modele,
|
id: data.id_modele,
|
||||||
name: data.nom_modele,
|
name: data.nom_modele,
|
||||||
url: data.url_notice_modele,
|
url: data.url_notice_modele,
|
||||||
creator: data.id_membre,
|
creator: (await memberService.getMember(data.id_membre)).left,
|
||||||
inheritFrom: data.id_modele_2,
|
inheritFrom: data.id_modele_2,
|
||||||
pieces: await getPiecesFromModel(data.id_modele),
|
pieces: await getPiecesFromModel(data.id_modele),
|
||||||
review: await getNoteFromModel(data.id_modele),
|
review: await getNoteFromModel(data.id_modele),
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
.header {
|
.header {
|
||||||
background-color: var(--fg);
|
background-color: var(--fg);
|
||||||
color: var(--bg);
|
color: var(--bg);
|
||||||
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header a {
|
.header a {
|
||||||
|
29
back-end/src/static/css/list.css
Normal file
29
back-end/src/static/css/list.css
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
.list li {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list li {
|
||||||
|
background: #C1292E;
|
||||||
|
transition: .2s ease-in-out;
|
||||||
|
border-radius: 8px;
|
||||||
|
text-align: center;
|
||||||
|
min-width: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
grid-template-rows: repeat(auto, 1fr);
|
||||||
|
width: fit-content;
|
||||||
|
gap: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.list li a {
|
||||||
|
display: block;
|
||||||
|
color: white;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: .9rem;
|
||||||
|
text-decoration: none;
|
||||||
|
padding: 8px 13px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -9,26 +10,50 @@
|
|||||||
|
|
||||||
<%- include('partials/links.ejs') %>
|
<%- include('partials/links.ejs') %>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<%- include('partials/header.ejs') %>
|
<%- include('partials/header.ejs') %>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
Liste des membres qui ont proposés le plus de modèles
|
Liste des membres qui ont proposés le plus de modèles
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<ul>
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nom</th>
|
||||||
|
<th>Nombre de modèle proposés</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
<% members.forEach(function(member) { %>
|
<% members.forEach(function(member) { %>
|
||||||
<li>
|
<tr>
|
||||||
<span>
|
<td>
|
||||||
<%= member.nb_models %>
|
<a href="/membres/byid/<%=member.id_member%>">
|
||||||
</span>
|
|
||||||
|
|
||||||
<a href="/membres/byname/<%=member.name%>">
|
|
||||||
<%= member.name %>
|
<%= member.name %>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= member.nb_models %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="/membres/byid/<%=member.id_member%>">
|
||||||
|
<i class="fa-solid fa-eye"></i>
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
<% }); %>
|
<% }); %>
|
||||||
|
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<ul>
|
||||||
</ul>
|
</ul>
|
||||||
|
</main>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
@ -14,16 +14,16 @@
|
|||||||
<body>
|
<body>
|
||||||
<%- include('partials/header.ejs') %>
|
<%- include('partials/header.ejs') %>
|
||||||
|
|
||||||
|
<main>
|
||||||
<h1>
|
<h1>
|
||||||
<%= model.name %>
|
<%= model.name %>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
<main>
|
|
||||||
|
|
||||||
id : <%= model.id %>
|
id : <%= model.id %>
|
||||||
url : <%= model.url %>
|
url : <%= model.url %>
|
||||||
creator : <%= model.creator %>
|
creator : <%= model.creator.name %>
|
||||||
inheritFrom : <%= model.inheritFrom %>
|
inheritFrom : <%= model.inheritFrom %>
|
||||||
<h2>Liste des pièces nécessaires</h2>
|
<h2>Liste des pièces nécessaires</h2>
|
||||||
<table>
|
<table>
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td><%=model.id%></td>
|
<td><%=model.id%></td>
|
||||||
<td><%=model.name%></td>
|
<td><%=model.name%></td>
|
||||||
<td><a href="/membres/byid/<%=model.creator%>"><i class="fa-solid fa-user"></i> <%=model.creator%></a></td>
|
<td><a href="/membres/byid/<%=model.creator.id_member%>"><i class="fa-solid fa-user"></i> <%=model.creator.name%></a></td>
|
||||||
<td><%=model.review.first%>/5 (<%=model.review.second%> avis)</td>
|
<td><%=model.review.first%>/5 (<%=model.review.second%> avis)</td>
|
||||||
<td><a href="/models/byname/<%=model.name%>"><i class="fa-solid fa-eye"></i></a></td>
|
<td><a href="/models/byname/<%=model.name%>"><i class="fa-solid fa-eye"></i></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -19,6 +19,12 @@
|
|||||||
</li>
|
</li>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
<a href="/pieces">
|
||||||
|
<li>
|
||||||
|
Pièces
|
||||||
|
</li>
|
||||||
|
</a>
|
||||||
|
|
||||||
<a href="/rendu">
|
<a href="/rendu">
|
||||||
<li>
|
<li>
|
||||||
Rendus
|
Rendus
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<script src="https://kit.fontawesome.com/62d2ff68ea.js" crossorigin="anonymous"></script>
|
<script src="https://kit.fontawesome.com/62d2ff68ea.js" crossorigin="anonymous"></script>
|
||||||
<link href="/static/css/colors.css" rel="stylesheet" />
|
<link href="/static/css/colors.css" rel="stylesheet" />
|
||||||
|
<link href="/static/css/list.css" rel="stylesheet" />
|
||||||
<link href="/static/css/header.css" rel="stylesheet" />
|
<link href="/static/css/header.css" rel="stylesheet" />
|
||||||
<link href="/static/css/table.css" rel="stylesheet" />
|
<link href="/static/css/table.css" rel="stylesheet" />
|
||||||
<link href="/static/css/reset.css" rel="stylesheet" />
|
<link href="/static/css/reset.css" rel="stylesheet" />
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
@ -9,20 +10,42 @@
|
|||||||
|
|
||||||
<%- include('partials/links.ejs') %>
|
<%- include('partials/links.ejs') %>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<%- include('partials/header.ejs') %>
|
<%- include('partials/header.ejs') %>
|
||||||
|
|
||||||
<a href="/models/fromfan"><p>Liste des modèles proposés par des fans</p></a>
|
<main>
|
||||||
|
<h2 style="margin-top: 13px;margin-bottom: 13px;">Requêtes prédéfinies</h2>
|
||||||
|
|
||||||
<a href="/models/bynote"><p>Liste des modèles par note décroissante</p></a>
|
|
||||||
|
|
||||||
<a href="javascript:let now = new Date();now.setUTCFullYear(now.getUTCFullYear() - 5);window.location.pathname = '/boxes/from/' + `${now.getUTCFullYear()}-${now.getUTCMonth() + 1}-${now.getUTCDate()}`;">
|
<ul class="list">
|
||||||
<p>Liste des boites ayant moins de 5 ans</p>
|
|
||||||
|
<li>
|
||||||
|
<a href="/models/fromfan">
|
||||||
|
Liste des modèles proposés par des fans
|
||||||
</a>
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/models/bynote">
|
||||||
|
Liste des modèles par note décroissante
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
href="javascript:let now = new Date();now.setUTCFullYear(now.getUTCFullYear() - 5);window.location.pathname = '/boxes/from/' + `${now.getUTCFullYear()}-${now.getUTCMonth() + 1}-${now.getUTCDate()}`;">
|
||||||
|
Liste des boites ayant moins de 5 ans
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
<a href="/membres/bynbmodels">
|
<a href="/membres/bynbmodels">
|
||||||
<p>Liste des membres qui ont proposés le plus de modèles</p>
|
Liste des membres qui ont proposés le plus de modèles
|
||||||
</a>
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
import { Pair } from '../utils/utils';
|
import { Pair } from '../utils/utils';
|
||||||
|
import { Member } from './member';
|
||||||
import { Piece } from './piece';
|
import { Piece } from './piece';
|
||||||
|
|
||||||
type Model = {
|
type Model = {
|
||||||
id: number;
|
id: number;
|
||||||
name: string;
|
name: string;
|
||||||
url: string;
|
url: string;
|
||||||
creator: number;
|
creator: Member;
|
||||||
inheritFrom: number;
|
inheritFrom: number;
|
||||||
pieces: Array<Pair<Piece, number>>
|
pieces: Array<Pair<Piece, number>>
|
||||||
review: Pair<number, number>
|
review: Pair<number, number>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user