fix modeldetail bugs

This commit is contained in:
Simon Larsen
2022-11-26 19:27:45 +00:00
parent 374a3b5de2
commit 4d082d6401

View File

@@ -35,21 +35,11 @@ const ModelDetail: Function = <TBaseModel extends BaseModel>(
const [isLoading, setIsLoading] = useState<boolean>(true);
const [error, setError] = useState<string>('');
const [item, setItem] = useState<TBaseModel | null>(null);
const [model, setModal] = useState<TBaseModel | null>(null);
useEffect(() => {
if (props.modelType) {
setModal(new props.modelType());
}
},[props.modelType]);
const [onBeforeFetchData, setOnBeforeFetchData] = useState<
JSONObject | undefined
>(undefined);
useEffect(() => {
fetchItem();
}, [props.refresher]);
const getSelectFields: Function = (): Select<TBaseModel> => {
const select: Select<TBaseModel> = {};
@@ -74,14 +64,14 @@ const ModelDetail: Function = <TBaseModel extends BaseModel>(
? (Object.keys(field.field)[0] as string)
: null;
if (key && model?.isFileColumn(key)) {
if (key && new props.modelType()?.isFileColumn(key)) {
(populate as JSONObject)[key] = {
file: true,
_id: true,
type: true,
name: true,
};
} else if (key && model?.isEntityColumn(key)) {
} else if (key && new props.modelType()?.isEntityColumn(key)) {
(populate as JSONObject)[key] = (field.field as any)[key];
}
}
@@ -96,7 +86,7 @@ const ModelDetail: Function = <TBaseModel extends BaseModel>(
PermissionUtil.getAllPermissions();
const accessControl: Dictionary<ColumnAccessControl> =
model?.getColumnAccessControlForAllColumns() || {};
new props.modelType()?.getColumnAccessControlForAllColumns() || {};
const fieldsToSet: Array<Field<TBaseModel>> = [];
@@ -161,6 +151,7 @@ const ModelDetail: Function = <TBaseModel extends BaseModel>(
}, [onBeforeFetchData]);
const fetchItem: Function = async (): Promise<void> => {
// get item.
setIsLoading(true);
props.onLoadingChange && props.onLoadingChange(true);
@@ -181,9 +172,9 @@ const ModelDetail: Function = <TBaseModel extends BaseModel>(
if (!item) {
setError(
`Cannot load ${(
model?.singularName || 'item'
new props.modelType()?.singularName || 'item'
).toLowerCase()}. It could be because you don't have enough permissions to read this ${(
model?.singularName || 'item'
new props.modelType()?.singularName || 'item'
).toLowerCase()}.`
);
}
@@ -210,8 +201,10 @@ const ModelDetail: Function = <TBaseModel extends BaseModel>(
};
useEffect(() => {
fetchItem();
}, []);
if (props.modelId && props.modelType) {
fetchItem();
}
}, [props.modelId, props.refresher, props.modelType]);
if (isLoading) {
return (