diff --git a/.vscode/launch.json b/.vscode/launch.json
index e396348..dabc1b2 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -5,15 +5,12 @@
"type": "java",
"name": "Backend: Spring Boot",
"request": "launch",
- "presentation": {
- "hidden": true
- },
"mainClass": "fr.nessar.lmnporganizer.LmnpOrganizerApplication",
"projectName": "backend",
"cwd": "${workspaceFolder}/backend",
"envFile": "${workspaceFolder}/.env",
"env": {
- "SPRING_DATA_MONGODB_URI": "mongodb://admin:adminpassword@localhost:27017/lmnp?authSource=admin"
+ "SPRING_DATA_MONGODB_URI": "mongodb://${MONGO_ROOT_USERNAME:lmnp}:${MONGO_ROOT_PASSWORD}@localhost:${MONGO_PORT:27017}/lmnp?authSource=admin&replicaSet=rs0&directConnection=true"
},
"preLaunchTask": "Start MongoDB",
"postDebugTask": "Stop MongoDB"
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 89bb1fb..57072b8 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -1,47 +1,47 @@
{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Start MongoDB",
- "type": "shell",
- "command": "docker compose up --detach --wait mongodb",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Stop MongoDB",
- "type": "shell",
- "command": "docker compose stop mongodb",
- "options": {
- "cwd": "${workspaceFolder}"
- },
- "problemMatcher": []
- },
- {
- "label": "Start Angular",
- "type": "shell",
- "command": "bun run start -- --proxy-config proxy.conf.json",
- "options": {
- "cwd": "${workspaceFolder}/frontend"
- },
- "isBackground": true,
- "problemMatcher": {
- "owner": "angular",
- "pattern": {
- "regexp": "^$"
- },
- "background": {
- "activeOnStart": true,
- "beginsPattern": ".*",
- "endsPattern": "^\\s*➜\\s+Local:\\s+http://localhost:4200/\\s*$"
- }
- },
- "presentation": {
- "reveal": "always",
- "panel": "dedicated"
- }
- }
- ]
-}
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Start MongoDB",
+ "type": "shell",
+ "command": "docker compose --file=compose.dev.yml up --detach --wait mongodb",
+ "options": {
+ "cwd": "${workspaceFolder}"
+ },
+ "problemMatcher": []
+ },
+ {
+ "label": "Stop MongoDB",
+ "type": "shell",
+ "command": "docker compose --file=compose.dev.yml stop mongodb",
+ "options": {
+ "cwd": "${workspaceFolder}"
+ },
+ "problemMatcher": []
+ },
+ {
+ "label": "Start Angular",
+ "type": "shell",
+ "command": "bun run start -- --proxy-config proxy.conf.json",
+ "options": {
+ "cwd": "${workspaceFolder}/frontend"
+ },
+ "isBackground": true,
+ "problemMatcher": {
+ "owner": "angular",
+ "pattern": {
+ "regexp": "^$"
+ },
+ "background": {
+ "activeOnStart": true,
+ "beginsPattern": ".*",
+ "endsPattern": "^\\s*➜\\s+Local:\\s+http://localhost:4200/\\s*$"
+ }
+ },
+ "presentation": {
+ "reveal": "always",
+ "panel": "dedicated"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/compose.dev.yml b/compose.dev.yml
index a8de085..1b02063 100644
--- a/compose.dev.yml
+++ b/compose.dev.yml
@@ -4,6 +4,8 @@ services:
mongodb:
image: mongo:8.0
restart: unless-stopped
+ ports:
+ - "${MONGO_PORT:-27017}:27017"
entrypoint:
- /bin/bash
- -c
diff --git a/frontend/src/app/components/private-area-editor/private-area-editor.css b/frontend/src/app/components/private-area-editor/private-area-editor.css
index 13947c2..43c02dd 100644
--- a/frontend/src/app/components/private-area-editor/private-area-editor.css
+++ b/frontend/src/app/components/private-area-editor/private-area-editor.css
@@ -1,17 +1,57 @@
.private-areas {
- display: grid;
- gap: 12px;
+ display: grid;
+ gap: var(--space-3, 0.75rem);
}
-.private-areas fieldset {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
- gap: 12px;
+
+.private-area {
+ overflow: hidden;
+ border: 1px solid var(--border, #dce5df);
+ background: var(--surface-raised, #ffffff);
+ box-shadow: none;
}
-.private-areas label {
- display: grid;
- gap: 4px;
+
+.private-area-heading {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: space-between;
+ gap: var(--space-2, 0.5rem);
+ margin-bottom: var(--space-4, 1rem);
}
-.private-areas input,
-.private-areas select {
- min-height: 40px;
+
+.private-area-heading h3 {
+ min-width: 0;
+ margin: 0;
+ overflow-wrap: break-word;
+ font-size: 1rem;
}
+
+.danger-action.mat-mdc-button {
+ --mdc-text-button-label-text-color: var(--danger, #b42318);
+}
+
+.main-room-count {
+ color: var(--accent, #0f766e);
+ font-size: 0.875rem;
+ font-weight: 700;
+}
+
+.empty-private-areas {
+ display: grid;
+ place-items: center;
+ gap: var(--space-3, 0.75rem);
+ padding: var(--space-6, 1.5rem);
+ border: 1px dashed var(--border-strong, #c7d3cd);
+ border-radius: var(--radius-md, 0.8125rem);
+ background: var(--surface-soft, #e9efeb);
+ color: var(--text-muted, #687670);
+ text-align: center;
+}
+
+.empty-private-areas p {
+ margin: 0;
+}
+
+.add-private-area {
+ margin-top: var(--space-4, 1rem);
+}
\ No newline at end of file
diff --git a/frontend/src/app/components/private-area-editor/private-area-editor.html b/frontend/src/app/components/private-area-editor/private-area-editor.html
index 151158d..ddba006 100644
--- a/frontend/src/app/components/private-area-editor/private-area-editor.html
+++ b/frontend/src/app/components/private-area-editor/private-area-editor.html
@@ -1,38 +1,62 @@
- Le nombre réglementaire de pièces principales est calculé depuis ces espaces :
- {{ mainRoomCount() }}.
- Espaces privatifs
-
Le nombre réglementaire de pièces principales est calculé depuis ces espaces.
++ {{ mainRoomCount() }} pièce{{ mainRoomCount() === 1 ? '' : 's' }} principale{{ + mainRoomCount() === 1 ? '' : 's' + }} +
+Aucun espace privatif renseigné.
+ +