diff --git a/app/[legislature]/dossier/[id]/[tab]/page.tsx b/app/[legislature]/dossier/[id]/[tab]/page.tsx
index 387bb46..011b203 100644
--- a/app/[legislature]/dossier/[id]/[tab]/page.tsx
+++ b/app/[legislature]/dossier/[id]/[tab]/page.tsx
@@ -1,6 +1,7 @@
import React from "react";
import { PreviewTab } from "@/components/folders/PreviewTab";
+import { AmendementTab } from "@/components/folders/AmendementTab";
import { DebateTab } from "@/components/folders/DebateTab";
import { getDossier } from "@/repository/database";
@@ -26,7 +27,7 @@ export default async function Page({
return ;
case "amendement":
- return
Amendements
;
+ return ;
case "votes":
return Votes
;
diff --git a/components/folders/AmendementTab/AmendementCard.tsx b/components/folders/AmendementTab/AmendementCard.tsx
new file mode 100644
index 0000000..1ee419b
--- /dev/null
+++ b/components/folders/AmendementTab/AmendementCard.tsx
@@ -0,0 +1,87 @@
+"use client";
+import * as React from "react";
+
+import { Amendement } from "@/repository/types";
+import { Box } from "@mui/material";
+import Stack from "@mui/material/Stack";
+
+export default function AmendementCard(props: Amendement) {
+ const {
+ dateDepot,
+ dateSort,
+ sortAmendement,
+ etatCode,
+ etatLibelle,
+ sousEtatCode,
+ sousEtatLibelle,
+ dispositif,
+ exposeSommaire,
+ urlDivisionTexteVise,
+ signatairesLibelle,
+ ...other
+ } = props;
+
+ const [showMore, setShowMore] = React.useState(false);
+ return (
+
+
+ Depte
+ {sortAmendement || etatLibelle}
+
+ ul": {
+ flex: "4 0 0",
+ },
+ "&>p": {
+ flex: "8 0 0",
+ },
+ }}
+ >
+
+ -
+ Date de dépôt:{" "}
+
+ {dateDepot.toLocaleDateString("fr-FR", {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ })}
+
+
+ -
+ Date d'examen:{" "}
+
+ {dateDepot.toLocaleDateString("fr-FR", {
+ year: "numeric",
+ month: "long",
+ day: "numeric",
+ })}
+
+
+ -
+ Déposé par:
+
+ -
+ Examiné par:
+
+ -
+ Etat:
+
+
+
+
+
+ {showMore && (
+
+ {JSON.stringify(props, null, 2)}
+
+ )}
+
+
+ );
+}
diff --git a/components/folders/AmendementTab/index.tsx b/components/folders/AmendementTab/index.tsx
new file mode 100644
index 0000000..22a1f8e
--- /dev/null
+++ b/components/folders/AmendementTab/index.tsx
@@ -0,0 +1,52 @@
+"use client";
+
+import React from "react";
+
+import Container from "@mui/material/Container";
+import Stack from "@mui/material/Stack";
+
+import { DossierData } from "@/repository/database";
+import AmendementCard from "./AmendementCard";
+import { Divider } from "@mui/material";
+
+type AmendementTabProps = {
+ dossier?: DossierData;
+};
+
+export const AmendementTab = ({ dossier }: AmendementTabProps) => {
+ const {
+ commissionFondId,
+ commissionAvisId,
+ organes = {},
+ rapporteursFondIds,
+ coSignatairesIds,
+ acteurs = {},
+ acts = [],
+ documents = [],
+ amendementCount = {},
+ amendements = [],
+ } = dossier ?? {};
+
+ return (
+
+
+ {amendements.slice(0, 10).map((amendement) => (
+
+
+
+
+ ))}
+
+
+ );
+};
diff --git a/components/folders/CardLayout.tsx b/components/folders/CardLayout.tsx
index 56b9238..1291c88 100644
--- a/components/folders/CardLayout.tsx
+++ b/components/folders/CardLayout.tsx
@@ -3,7 +3,7 @@ import * as React from "react";
import Card from "@mui/material/Card";
import CardContent from "@mui/material/CardContent";
-import { CardHeader, CardHeaderProps, Theme, useTheme } from "@mui/material";
+import { CardHeader, CardHeaderProps } from "@mui/material";
export interface CardLayoutProps
extends Pick {
diff --git a/repository/database.ts b/repository/database.ts
index ca494bf..2b58b66 100644
--- a/repository/database.ts
+++ b/repository/database.ts
@@ -7,6 +7,7 @@ import {
Organe,
Acteur,
Document as DocumentData,
+ Amendement,
} from "./types";
/**
@@ -14,14 +15,14 @@ import {
* https://dev.to/noclat/fixing-too-many-connections-errors-with-database-clients-stacking-in-dev-mode-with-next-js-3kpm
*/
function registerService(name: string, initFn: () => T): T {
- if (process.env.NODE_ENV === 'development') {
+ if (process.env.NODE_ENV === "development") {
if (!(name in global)) {
(global as any)[name] = initFn();
}
return (global as any)[name];
}
return initFn();
-};
+}
const db = registerService("database", () => knex(config.development));
@@ -81,6 +82,7 @@ export type DossierData = {
* Map les document id avec leur nombre d'amendement.
*/
amendementCount: Record;
+ amendements: Amendement[];
acts: ActeLegislatif[];
documents: Record;
organes: Record;
@@ -208,6 +210,11 @@ export async function getDossier(
amendementCount[texteLegislatifRefUid] = count;
});
+ const amendements = await db
+ .select("*")
+ .from("Amendement")
+ .whereIn("texteLegislatifRefUid", Array.from(documentsIds));
+
return {
dossier,
commissionFondId,
@@ -219,6 +226,7 @@ export async function getDossier(
organes,
acteurs,
amendementCount,
+ amendements,
};
} catch (error) {
console.error("Error fetching rows from Dossier:", error);