Implementing all cht classic routes
This commit is contained in:
39
gui/rpk-gui/src/pages/firm/ContractRoutes.tsx
Normal file
39
gui/rpk-gui/src/pages/firm/ContractRoutes.tsx
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { Route, Routes } from "react-router";
|
||||||
|
import React, { useContext } from "react";
|
||||||
|
import { FirmContext } from "../../contexts/FirmContext";
|
||||||
|
import List from "./base-page/List";
|
||||||
|
import Edit from "./base-page/Edit";
|
||||||
|
import New from "./base-page/New";
|
||||||
|
|
||||||
|
type Contract = {
|
||||||
|
id: string,
|
||||||
|
label: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ContractRoutes = () => {
|
||||||
|
return (
|
||||||
|
<Routes>
|
||||||
|
<Route index element={ <ListContract /> } />
|
||||||
|
<Route path="/edit/:record_id" element={ <EditContract /> } />
|
||||||
|
<Route path="/create" element={ <CreateContract /> } />
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ListContract = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
const columns = [
|
||||||
|
{ field: "label", headerName: "Label", flex: 1 },
|
||||||
|
];
|
||||||
|
return <List<Contract> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/contracts`} columns={columns} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const EditContract = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <Edit<Contract> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/contracts`} schemaName={"ContractUpdate"} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const CreateContract = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <New<Contract> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/contracts`} schemaName={"ContractCreate"} />
|
||||||
|
}
|
||||||
39
gui/rpk-gui/src/pages/firm/DraftRoutes.tsx
Normal file
39
gui/rpk-gui/src/pages/firm/DraftRoutes.tsx
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { Route, Routes } from "react-router";
|
||||||
|
import React, { useContext } from "react";
|
||||||
|
import { FirmContext } from "../../contexts/FirmContext";
|
||||||
|
import List from "./base-page/List";
|
||||||
|
import Edit from "./base-page/Edit";
|
||||||
|
import New from "./base-page/New";
|
||||||
|
|
||||||
|
type Draft = {
|
||||||
|
id: string,
|
||||||
|
label: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export const DraftRoutes = () => {
|
||||||
|
return (
|
||||||
|
<Routes>
|
||||||
|
<Route index element={ <ListDraft /> } />
|
||||||
|
<Route path="/edit/:record_id" element={ <EditDraft /> } />
|
||||||
|
<Route path="/create" element={ <CreateDraft /> } />
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ListDraft = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
const columns = [
|
||||||
|
{ field: "label", headerName: "Label", flex: 1 },
|
||||||
|
];
|
||||||
|
return <List<Draft> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/contracts/drafts`} columns={columns} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const EditDraft = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <Edit<Draft> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/contracts/drafts`} schemaName={"ContractDraftUpdate"} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const CreateDraft = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <New<Draft> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/contracts/drafts`} schemaName={"ContractDraftCreate"} />
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@ import { Route, Routes } from "react-router";
|
|||||||
import React, { useContext } from "react";
|
import React, { useContext } from "react";
|
||||||
import { FirmContext } from "../../contexts/FirmContext";
|
import { FirmContext } from "../../contexts/FirmContext";
|
||||||
import List from "./base-page/List";
|
import List from "./base-page/List";
|
||||||
|
import Edit from "./base-page/Edit";
|
||||||
|
import New from "./base-page/New";
|
||||||
|
|
||||||
type Entity = {
|
type Entity = {
|
||||||
id: string,
|
id: string,
|
||||||
@@ -14,6 +16,8 @@ export const EntityRoutes = () => {
|
|||||||
return (
|
return (
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route index element={ <ListEntity /> } />
|
<Route index element={ <ListEntity /> } />
|
||||||
|
<Route path="/edit/:record_id" element={ <EditEntity /> } />
|
||||||
|
<Route path="/create" element={ <CreateEntity /> } />
|
||||||
</Routes>
|
</Routes>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -24,5 +28,15 @@ const ListEntity = () => {
|
|||||||
{ field: "label", headerName: "Label", flex: 1 },
|
{ field: "label", headerName: "Label", flex: 1 },
|
||||||
{ field: "entity_data", headerName: "Type", flex: 1, valueFormatter: ({ type }: {type: string}) => type }
|
{ field: "entity_data", headerName: "Type", flex: 1, valueFormatter: ({ type }: {type: string}) => type }
|
||||||
];
|
];
|
||||||
return <List<Entity> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/entities/`} columns={columns} />
|
return <List<Entity> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/entities`} columns={columns} />
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const EditEntity = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <Edit<Entity> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/entities`} schemaName={"EntityUpdate"} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const CreateEntity = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <New<Entity> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/entities`} schemaName={"EntityCreate"} />
|
||||||
|
}
|
||||||
|
|||||||
40
gui/rpk-gui/src/pages/firm/ProvisionRoutes.tsx
Normal file
40
gui/rpk-gui/src/pages/firm/ProvisionRoutes.tsx
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import { Route, Routes } from "react-router";
|
||||||
|
import React, { useContext } from "react";
|
||||||
|
import { FirmContext } from "../../contexts/FirmContext";
|
||||||
|
import List from "./base-page/List";
|
||||||
|
import Edit from "./base-page/Edit";
|
||||||
|
import New from "./base-page/New";
|
||||||
|
|
||||||
|
type Provision = {
|
||||||
|
id: string,
|
||||||
|
label: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const ProvisionRoutes = () => {
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Routes>
|
||||||
|
<Route index element={ <ListProvision /> } />
|
||||||
|
<Route path="/edit/:record_id" element={ <EditProvision /> } />
|
||||||
|
<Route path="/create" element={ <CreateProvision /> } />
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ListProvision = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
const columns = [
|
||||||
|
{ field: "label", headerName: "Label", flex: 1 },
|
||||||
|
];
|
||||||
|
return <List<Provision> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/templates/provisions`} columns={columns} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const EditProvision = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <Edit<Provision> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/templates/provisions`} schemaName={"ProvisionTemplateUpdate"} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const CreateProvision = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <New<Provision> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/templates/provisions`} schemaName={"ProvisionTemplateCreate"} />
|
||||||
|
}
|
||||||
39
gui/rpk-gui/src/pages/firm/TemplateRoutes.tsx
Normal file
39
gui/rpk-gui/src/pages/firm/TemplateRoutes.tsx
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { Route, Routes } from "react-router";
|
||||||
|
import React, { useContext } from "react";
|
||||||
|
import { FirmContext } from "../../contexts/FirmContext";
|
||||||
|
import List from "./base-page/List";
|
||||||
|
import Edit from "./base-page/Edit";
|
||||||
|
import New from "./base-page/New";
|
||||||
|
|
||||||
|
type Template = {
|
||||||
|
id: string,
|
||||||
|
label: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
export const TemplateRoutes = () => {
|
||||||
|
return (
|
||||||
|
<Routes>
|
||||||
|
<Route index element={ <ListTemplate /> } />
|
||||||
|
<Route path="/edit/:record_id" element={ <EditTemplate /> } />
|
||||||
|
<Route path="/create" element={ <CreateTemplate /> } />
|
||||||
|
</Routes>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ListTemplate = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
const columns = [
|
||||||
|
{ field: "label", headerName: "Label", flex: 1 },
|
||||||
|
];
|
||||||
|
return <List<Template> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/templates/contracts`} columns={columns} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const EditTemplate = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <Edit<Template> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/templates/contracts`} schemaName={"ContractTemplateUpdate"} />
|
||||||
|
}
|
||||||
|
|
||||||
|
const CreateTemplate = () => {
|
||||||
|
const { currentFirm } = useContext(FirmContext);
|
||||||
|
return <New<Template> resource={`firm/${currentFirm.instance}/${currentFirm.firm}/templates/contracts`} schemaName={"ContractTemplateCreate"} />
|
||||||
|
}
|
||||||
@@ -2,16 +2,18 @@ import { CrudForm } from "../../../lib/crud/components/crud-form";
|
|||||||
import { UiSchema } from "@rjsf/utils";
|
import { UiSchema } from "@rjsf/utils";
|
||||||
import { useParams } from "react-router";
|
import { useParams } from "react-router";
|
||||||
|
|
||||||
type CardProps = {
|
type EditProps = {
|
||||||
resource: string,
|
resource: string,
|
||||||
schemaName: string,
|
schemaName: string,
|
||||||
uiSchema?: UiSchema,
|
uiSchema?: UiSchema,
|
||||||
}
|
}
|
||||||
|
|
||||||
const Card = (props: CardProps) => {
|
const Edit = <T,>(props: EditProps) => {
|
||||||
const { schemaName, resource, uiSchema } = props;
|
const { schemaName, resource, uiSchema } = props;
|
||||||
const { record_id } = useParams();
|
const { record_id } = useParams();
|
||||||
|
|
||||||
|
console.log(record_id);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<CrudForm
|
<CrudForm
|
||||||
schemaName={schemaName}
|
schemaName={schemaName}
|
||||||
@@ -22,4 +24,4 @@ const Card = (props: CardProps) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Card;
|
export default Edit;
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
import { UiSchema } from "@rjsf/utils";
|
import { UiSchema } from "@rjsf/utils";
|
||||||
import { List as RefineList, useDataGrid } from "@refinedev/mui";
|
import { List as RefineList, useDataGrid } from "@refinedev/mui";
|
||||||
import { DataGrid, GridColDef, GridValidRowModel } from "@mui/x-data-grid";
|
import { DataGrid, GridColDef, GridValidRowModel } from "@mui/x-data-grid";
|
||||||
|
import { Link, useNavigate } from "react-router"
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
import { Button } from "@mui/material";
|
||||||
|
|
||||||
type ListProps<T extends GridValidRowModel> = {
|
type ListProps<T extends GridValidRowModel> = {
|
||||||
resource: string,
|
resource: string,
|
||||||
@@ -13,16 +15,26 @@ type ListProps<T extends GridValidRowModel> = {
|
|||||||
const List = <T extends GridValidRowModel>(props: ListProps<T>) => {
|
const List = <T extends GridValidRowModel>(props: ListProps<T>) => {
|
||||||
const { schemaName, resource, uiSchema, columns } = props;
|
const { schemaName, resource, uiSchema, columns } = props;
|
||||||
const { dataGridProps } = useDataGrid<T>({resource: resource});
|
const { dataGridProps } = useDataGrid<T>({resource: resource});
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const cols = React.useMemo<GridColDef<T>[]>(
|
const cols = React.useMemo<GridColDef<T>[]>(
|
||||||
() => columns,
|
() => columns,
|
||||||
[],
|
[],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const handleRowClick = (params: any, event: any) => {
|
||||||
|
navigate(`edit/${params.id}`)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<RefineList
|
<RefineList>
|
||||||
canCreate={true}
|
<Link to={"create"} >
|
||||||
>
|
<Button>Create</Button>
|
||||||
<DataGrid {...dataGridProps} columns={cols} />
|
</Link>
|
||||||
|
<DataGrid
|
||||||
|
{...dataGridProps}
|
||||||
|
columns={cols}
|
||||||
|
onRowClick={handleRowClick} />
|
||||||
</RefineList>
|
</RefineList>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ type NewProps = {
|
|||||||
uiSchema?: UiSchema,
|
uiSchema?: UiSchema,
|
||||||
}
|
}
|
||||||
|
|
||||||
const New = (props: NewProps) => {
|
const New = <T,>(props: NewProps) => {
|
||||||
const { schemaName, resource, uiSchema } = props;
|
const { schemaName, resource, uiSchema } = props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -6,22 +6,28 @@ import { useOne } from "@refinedev/core";
|
|||||||
import { CrudForm } from "../../lib/crud/components/crud-form";
|
import { CrudForm } from "../../lib/crud/components/crud-form";
|
||||||
import { IFirm } from "../../interfaces";
|
import { IFirm } from "../../interfaces";
|
||||||
import { EntityRoutes } from "./EntityRoutes";
|
import { EntityRoutes } from "./EntityRoutes";
|
||||||
|
import { ContractRoutes } from "./ContractRoutes";
|
||||||
|
import { DraftRoutes } from "./DraftRoutes";
|
||||||
|
import { TemplateRoutes } from "./TemplateRoutes";
|
||||||
|
import { ProvisionRoutes } from "./ProvisionRoutes";
|
||||||
|
|
||||||
export const FirmRoutes = () => {
|
export const FirmRoutes = () => {
|
||||||
return (
|
return (
|
||||||
<>
|
<Routes>
|
||||||
<Routes>
|
<Route path="/:instance/:firm/*" element={
|
||||||
<Route path="/:instance/:firm/*" element={
|
<FirmContextProvider>
|
||||||
<FirmContextProvider>
|
<Header />
|
||||||
<Header />
|
<Routes>
|
||||||
<Routes>
|
<Route index element={ <FirmHome /> } />
|
||||||
<Route index element={ <FirmHome /> } />
|
<Route path="/entities/*" element={ <EntityRoutes /> } />
|
||||||
<Route path="/entities/*" element={ <EntityRoutes /> } />
|
<Route path="/provisions/*" element={ <ProvisionRoutes /> } />
|
||||||
</Routes>
|
<Route path="/templates/*" element={ <TemplateRoutes /> } />
|
||||||
</FirmContextProvider>
|
<Route path="/drafts/*" element={ <DraftRoutes /> } />
|
||||||
} />
|
<Route path="/contracts/*" element={ <ContractRoutes /> } />
|
||||||
</Routes>
|
</Routes>
|
||||||
</>
|
</FirmContextProvider>
|
||||||
|
} />
|
||||||
|
</Routes>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,6 +48,10 @@ const FirmHome = () => {
|
|||||||
<h1>This is la firme {currentFirm.instance} / {currentFirm.firm}</h1>
|
<h1>This is la firme {currentFirm.instance} / {currentFirm.firm}</h1>
|
||||||
<ul>
|
<ul>
|
||||||
<li><Link to="entities">Entitées</Link></li>
|
<li><Link to="entities">Entitées</Link></li>
|
||||||
|
<li><Link to="provisions">Templates de Clauses</Link></li>
|
||||||
|
<li><Link to="templates">Templates de Contrats</Link></li>
|
||||||
|
<li><Link to="drafts">Brouillons</Link></li>
|
||||||
|
<li><Link to="contracts">Contrats</Link></li>
|
||||||
</ul>
|
</ul>
|
||||||
</>
|
</>
|
||||||
|
|
||||||
@@ -67,4 +77,4 @@ const FirmInitForm = (props: FirmInitFormPros) => {
|
|||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ export const HubRoutes = () => {
|
|||||||
|
|
||||||
const HubHome = () => {
|
const HubHome = () => {
|
||||||
const { data: user } = useGetIdentity<IAuthUser>();
|
const { data: user } = useGetIdentity<IAuthUser>();
|
||||||
const { data: list } = useList<IFirm>({resource: "hub/users/firms/", pagination: { mode: "off" }}, )
|
const { data: list } = useList<IFirm>({resource: "hub/users/firms", pagination: { mode: "off" }}, )
|
||||||
if (user === undefined || user === null || list === undefined) {
|
if (user === undefined || user === null || list === undefined) {
|
||||||
return <p>Loading</p>;
|
return <p>Loading</p>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ export const dataProvider: DataProvider = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(`${API_URL}/${resource}?${params.toString()}`);
|
const response = await fetch(`${API_URL}/${resource}/?${params.toString()}`);
|
||||||
|
|
||||||
if (response.status < 200 || response.status > 299) {
|
if (response.status < 200 || response.status > 299) {
|
||||||
if (response.status == 405) {
|
if (response.status == 405) {
|
||||||
|
|||||||
Reference in New Issue
Block a user