Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DP_projet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
VILLAUME Lucas
DP_projet
Commits
7c9f22bb
Commit
7c9f22bb
authored
1 year ago
by
mhdaltaweel
Browse files
Options
Downloads
Patches
Plain Diff
creation doc c fait
parent
e56a38bc
No related branches found
No related tags found
1 merge request
!2
Doc
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
app.js
+33
-0
33 additions, 0 deletions
app.js
db/Database.js
+27
-0
27 additions, 0 deletions
db/Database.js
views/document.ejs
+38
-0
38 additions, 0 deletions
views/document.ejs
with
98 additions
and
0 deletions
app.js
+
33
−
0
View file @
7c9f22bb
...
...
@@ -84,6 +84,39 @@ app.get("/document", (req, res) => {
});
// route pour la sauvegarde de documents
app
.
post
(
'
/document/save
'
,
async
(
req
,
res
)
=>
{
try
{
const
documentData
=
req
.
body
;
const
savedDocumentId
=
await
db
.
saveDocument
(
documentData
);
res
.
status
(
200
).
json
({
message
:
'
Document sauvegardé avec succès
'
,
documentId
:
savedDocumentId
});
}
catch
(
error
)
{
console
.
error
(
'
Erreur lors de la sauvegarde du document:
'
,
error
);
res
.
status
(
500
).
json
({
message
:
'
Erreur lors de la sauvegarde du document
'
});
}
});
// route pour affichier mes docs
app
.
get
(
"
/mes-documents
"
,
async
(
req
,
res
)
=>
{
if
(
!
res
.
locals
.
user
)
{
return
res
.
redirect
(
"
/login
"
);
// Redirige vers la page de connexion si l'utilisateur n'est pas connecté
}
try
{
// la fonction db.getDocumentsByUserId(userId) renvoie tous les documents pour cet utilisateur
const
documents
=
await
db
.
getDocumentsByUserId
(
res
.
locals
.
user
.
_id
);
res
.
render
(
"
index
"
,
{
documents
:
documents
});
// Passezles documents au template EJS
}
catch
(
error
)
{
console
.
error
(
'
Erreur lors de la récupération des documents:
'
,
error
);
res
.
status
(
500
).
send
(
'
Erreur lors de la récupération des documents
'
);
}
});
app
.
all
(
"
*
"
,
(
req
,
res
)
=>
res
.
status
(
404
).
send
(
"
<h1>Il semblerait que cette page n'existe pas.</h1>
"
));
...
...
This diff is collapsed.
Click to expand it.
db/Database.js
+
27
−
0
View file @
7c9f22bb
...
...
@@ -60,6 +60,33 @@ class Database{
};
}
// sauvgarde le fichier
async
saveDocument
(
documentData
)
{
// Vérifie si le document a un ID pour déterminer si c'est une création ou une mise à jour
if
(
documentData
.
_id
)
{
// Convertir _id en un objet ObjectId
const
documentId
=
documentData
.
_id
;
delete
documentData
.
_id
;
// Retire _id des données car on ne peut pas le mettre à jour
const
result
=
await
this
.
#db
.
collection
(
'
documents
'
).
updateOne
(
{
_id
:
new
this
.
#client
.
ObjectId
(
documentId
)
},
{
$set
:
documentData
}
);
return
result
.
upsertedId
||
documentId
;
// Retourne l'ID mis à jour ou l'ID existant
}
else
{
// C'est un nouveau document, utilisez la méthode insert
const
result
=
await
this
.
insert
(
'
documents
'
,
documentData
);
return
result
;
// Retourne l'ID du nouveau document créé
}
}
// chercher les docs d'un utilisateur
async
getDocumentsByUserId
(
userId
)
{
return
await
this
.
#db
.
collection
(
'
documents
'
).
find
({
auteur
:
userId
}).
toArray
();
}
// Gestion des Collections
async
createPartage
(
userId
,
documentId
)
{
await
this
.
insert
(
'
partage
'
,
{
userId
,
documentId
});
...
...
This diff is collapsed.
Click to expand it.
views/document.ejs
+
38
−
0
View file @
7c9f22bb
...
...
@@ -10,6 +10,7 @@
<body>
<
%
-
include
('
partials
/
header
')
%
>
<div
class=
"spreadsheet-container"
>
<button
onclick=
"sauvegarderDocument()"
>
Sauvegarder
</button>
<table>
<
%
for
(
let
row =
0;
row
<
18;
row
++)
{
%
>
<tr>
...
...
@@ -27,6 +28,43 @@
<script>
// JavaScript pour la gestion des événements peut être ajouté ici
function
sauvegarderDocument
()
{
const
tableau
=
[];
const
lignes
=
document
.
querySelectorAll
(
"
table tr
"
);
lignes
.
forEach
((
ligne
,
rowIndex
)
=>
{
if
(
rowIndex
===
0
)
return
;
// Ignorer l'en-tête
const
cellules
=
ligne
.
querySelectorAll
(
"
td
"
);
const
rowData
=
Array
.
from
(
cellules
).
map
(
cell
=>
cell
.
innerText
||
""
);
tableau
.
push
(
rowData
);
});
// Créer un objet pour envoyer
const
documentData
=
{
nom
:
"
Nom du Document
"
,
// le rendre dynamique si nécessaire
contenu
:
tableau
};
// Appel AJAX pour envoyer les données
envoyerDonnees
(
documentData
);
}
function
envoyerDonnees
(
data
)
{
fetch
(
'
/document/save
'
,
{
// Mette ici ton URL de sauvegarde
method
:
'
POST
'
,
headers
:
{
'
Content-Type
'
:
'
application/json
'
},
body
:
JSON
.
stringify
(
data
)
})
.
then
(
response
=>
response
.
json
())
.
then
(
data
=>
{
console
.
log
(
'
Succès:
'
,
data
);
// Traite ici le retour de la sauvegarde
})
.
catch
((
error
)
=>
{
console
.
error
(
'
Erreur:
'
,
error
);
});
}
</script>
</body>
<
%
-
include
('
partials
/
footer
')
%
>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment