Implementing enum references for columns and filters
This commit is contained in:
@@ -210,14 +210,14 @@ def replace_variables_in_value(variables, value: str):
|
||||
|
||||
|
||||
class ContractDraftFilters(FilterSchema):
|
||||
status: Optional[str] = None
|
||||
status__in: Optional[list[str]] = None
|
||||
|
||||
class Constants(Filter.Constants):
|
||||
model = ContractDraft
|
||||
search_model_fields = ["label"]
|
||||
|
||||
class ContractFilters(FilterSchema):
|
||||
status: Optional[str] = None
|
||||
status__in: Optional[list[str]] = None
|
||||
|
||||
class Constants(Filter.Constants):
|
||||
model = Contract
|
||||
|
||||
@@ -83,7 +83,7 @@ class Entity(CrudDocument):
|
||||
|
||||
|
||||
class EntityDataFilter(Filter):
|
||||
type__in: Optional[list[EntityTypeEnum]] = None
|
||||
type__in: Optional[list[str]] = None
|
||||
|
||||
class Constants(Filter.Constants):
|
||||
model = EntityType
|
||||
|
||||
@@ -29,7 +29,6 @@ const CrudFilters = (props: CrudFiltersProps) => {
|
||||
setHasSearch(await jsonschemaProvider.hasSearch(resourcePath))
|
||||
const resourceFilters = await jsonschemaProvider.getListFilters(resourceName, resourcePath)
|
||||
setFiltersSchema(resourceFilters);
|
||||
console.log(resourceFilters);
|
||||
setFiltersLoading(false);
|
||||
} catch (error) {
|
||||
console.error('Error fetching data:', error);
|
||||
|
||||
@@ -170,6 +170,8 @@ const getFieldFilterType = (fieldName: string, field: RJSFSchema): string => {
|
||||
enumValues.push(f.const)
|
||||
}
|
||||
return `enum(${enumValues.join("|")})`
|
||||
} else if (is_enum(field) && field.enum != undefined) {
|
||||
return `enum(${field.enum.join("|")})`
|
||||
} else if (field.hasOwnProperty('type')) {
|
||||
if (field.type == "string" && field.format == "date-time") {
|
||||
return "dateTime";
|
||||
@@ -193,6 +195,13 @@ function buildColumns (rawSchemas: RJSFSchema, resourceName: string, prefix: str
|
||||
let resource = structuredClone(jst.getResource(resourceName));
|
||||
|
||||
let result: GridColDef[] = [];
|
||||
if (is_enum(resource) && prefix !== undefined) {
|
||||
return [{
|
||||
field: prefix,
|
||||
headerName: i18n.t(`schemas.${shortResourceName}.${convertCamelToSnake(prefix)}`) as string,
|
||||
type: "string"
|
||||
}];
|
||||
}
|
||||
for (const prop_name in resource.properties) {
|
||||
let prop = resource.properties[prop_name];
|
||||
|
||||
@@ -469,7 +478,12 @@ const JsonSchemaTraverser = class {
|
||||
if (is_array(resource) && property_name == 'items') {
|
||||
return resource.items as RJSFSchema;
|
||||
} else if (is_object(resource) && resource.properties !== undefined && property_name in resource.properties!) {
|
||||
return resource.properties[property_name] as RJSFSchema;
|
||||
const prop = resource.properties[property_name];
|
||||
if (is_reference(prop)) {
|
||||
const subresourceName = get_reference_name(prop);
|
||||
return this.getResource(subresourceName);
|
||||
}
|
||||
return prop as RJSFSchema;
|
||||
} else if (is_reference(resource)) {
|
||||
let subresourceName = get_reference_name(resource);
|
||||
let subresource = this.getResource(subresourceName);
|
||||
|
||||
@@ -25,6 +25,8 @@ export const ContractRoutes = () => {
|
||||
const ListContract = () => {
|
||||
const columns = [
|
||||
{ field: "label", column: { flex: 1 }},
|
||||
{ field: "status", column: { width: 160 }},
|
||||
{ field: "updated_at", column: { width: 160 }},
|
||||
];
|
||||
return <List<Contract> resource={`contracts`} schemaName={"Contract"} columns={columns} />
|
||||
}
|
||||
|
||||
@@ -29,7 +29,9 @@ export const DraftRoutes = () => {
|
||||
|
||||
const ListDraft = () => {
|
||||
const columns = [
|
||||
{ field: "label", column: { flex: 1 }},
|
||||
{ field: "label", column: { flex: 1 }},
|
||||
{ field: "status", column: { width: 160 }},
|
||||
{ field: "updated_at", column: { width: 160 }},
|
||||
];
|
||||
return <List<Draft> resource={`contracts/drafts`} columns={columns} schemaName={"Contract"} />
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user