Adding types au List Schemas

This commit is contained in:
2025-05-06 21:10:37 +02:00
parent 765c0749bb
commit 1cc6e1e85d

View File

@@ -2,6 +2,7 @@ import { RJSFSchema } from '@rjsf/utils';
import i18n from '../../../i18n' import i18n from '../../../i18n'
import { JSONSchema7Definition } from "json-schema"; import { JSONSchema7Definition } from "json-schema";
import { GridColDef } from "@mui/x-data-grid"; import { GridColDef } from "@mui/x-data-grid";
import { GridColType } from "@mui/x-data-grid/models/colDef/gridColType";
const API_URL = "/api/v1"; const API_URL = "/api/v1";
@@ -120,20 +121,34 @@ function buildColumns (rawSchemas: RJSFSchema, resourceName: string, prefix: str
const subresourceName = get_reference_name(prop.items); const subresourceName = get_reference_name(prop.items);
result = result.concat(buildColumns(rawSchemas, subresourceName, prefix ? `${prefix}.${prop_name}` : prop_name)) result = result.concat(buildColumns(rawSchemas, subresourceName, prefix ? `${prefix}.${prop_name}` : prop_name))
} else { } else {
let column: GridColDef = { let valueGetter: undefined|((value: any, row: any) => any) = undefined;
field: prefix ? `${prefix}.${prop_name}` : prop_name, let type: GridColType = "string";
headerName: i18n.t(`schemas.${shortResourceName}.${convertCamelToSnake(prop_name)}`, prop.title) as string, if (is_array(prop)) {
valueGetter: (value: any, row: any ) => { valueGetter = (value: any[], row: any ) => {
if (prefix === undefined) { return value.concat(".");
return value; }
} } else if (prefix !== undefined) {
valueGetter = (value: any, row: any ) => {
let parent = row; let parent = row;
for (const column of prefix.split(".")) { for (const col of prefix.split(".")) {
parent = parent[column]; parent = parent[col];
} }
return parent ? parent[prop_name] : ""; return parent ? parent[prop_name] : "";
} }
} else {
if (prop.type == "string" && prop.format == "date-time") {
type = "dateTime"
valueGetter = (value: string) => new Date(value)
}
}
if (prop.type == "string" && prop.format == "date-time") {
}
const column: GridColDef = {
field: prefix ? `${prefix}.${prop_name}` : prop_name,
headerName: i18n.t(`schemas.${shortResourceName}.${convertCamelToSnake(prop_name)}`, prop.title) as string,
type: type,
valueGetter: valueGetter
} }
result.push(column); result.push(column);
} }