fix: display admin and inactive when view
This commit is contained in:
@@ -241,6 +241,15 @@ export default function useOverlayScroller(data?: {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getScrollElement = () => {
|
||||||
|
if (!instanceRef.current || !scrollEventElement.current) {
|
||||||
|
instanceRef.current = instance?.();
|
||||||
|
scrollEventElement.current =
|
||||||
|
instanceRef.current?.elements()?.scrollEventElement;
|
||||||
|
}
|
||||||
|
return scrollEventElement;
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
return () => {
|
return () => {
|
||||||
instanceRef.current?.destroy?.();
|
instanceRef.current?.destroy?.();
|
||||||
@@ -254,6 +263,7 @@ export default function useOverlayScroller(data?: {
|
|||||||
scrollEventElement: scrollEventElement,
|
scrollEventElement: scrollEventElement,
|
||||||
initialized: initialized.current,
|
initialized: initialized.current,
|
||||||
getScrollElementScrollableHeight,
|
getScrollElementScrollableHeight,
|
||||||
|
getScrollElement,
|
||||||
generateInstance,
|
generateInstance,
|
||||||
destroyInstance: destroyInstance,
|
destroyInstance: destroyInstance,
|
||||||
updateScrollerPosition: throttledUpdateScrollerPosition,
|
updateScrollerPosition: throttledUpdateScrollerPosition,
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ const ColumnWrapper: React.FC<ColumnWrapperProps> = ({
|
|||||||
scrollEventElement,
|
scrollEventElement,
|
||||||
scrollToBottom,
|
scrollToBottom,
|
||||||
scrollToTarget,
|
scrollToTarget,
|
||||||
|
getScrollElement,
|
||||||
getScrollElementScrollableHeight
|
getScrollElementScrollableHeight
|
||||||
} = useOverlayScroller({
|
} = useOverlayScroller({
|
||||||
options: {
|
options: {
|
||||||
@@ -49,6 +50,7 @@ const ColumnWrapper: React.FC<ColumnWrapperProps> = ({
|
|||||||
scroller: scroller,
|
scroller: scroller,
|
||||||
osInstance: instance,
|
osInstance: instance,
|
||||||
scrollEventElement,
|
scrollEventElement,
|
||||||
|
getScrollElement,
|
||||||
getScrollElementScrollableHeight,
|
getScrollElementScrollableHeight,
|
||||||
scrollToBottom,
|
scrollToBottom,
|
||||||
scrollToTarget
|
scrollToTarget
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ interface WrapperContextProps {
|
|||||||
scrollTop: number;
|
scrollTop: number;
|
||||||
};
|
};
|
||||||
scrollToTarget?: (target: any, offset?: number) => void;
|
scrollToTarget?: (target: any, offset?: number) => void;
|
||||||
|
getScrollElement?: () => HTMLElement | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const WrapperContext = createContext<WrapperContextProps>(
|
export const WrapperContext = createContext<WrapperContextProps>(
|
||||||
|
|||||||
@@ -75,8 +75,10 @@ const AccessControlForm = forwardRef((props: AccessControlFormProps, ref) => {
|
|||||||
}));
|
}));
|
||||||
setTotalPages(res.pagination.totalPage);
|
setTotalPages(res.pagination.totalPage);
|
||||||
setUserList(options);
|
setUserList(options);
|
||||||
|
return options;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setUserList([]);
|
setUserList([]);
|
||||||
|
return [];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -110,14 +112,6 @@ const AccessControlForm = forwardRef((props: AccessControlFormProps, ref) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleFilterChange = (e: any) => {
|
|
||||||
if (e.target.checked) {
|
|
||||||
setFilterInUsers(new Set(['admin', 'inactive']));
|
|
||||||
} else {
|
|
||||||
setFilterInUsers(new Set());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
useImperativeHandle(ref, () => ({
|
useImperativeHandle(ref, () => ({
|
||||||
submit: () => {
|
submit: () => {
|
||||||
form.submit();
|
form.submit();
|
||||||
@@ -134,20 +128,43 @@ const AccessControlForm = forwardRef((props: AccessControlFormProps, ref) => {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (currentData?.id) {
|
const init = async () => {
|
||||||
queryModelAccessUserList(currentData.id).then((res) => {
|
const allusers = await getUserList(queryParams);
|
||||||
const keys = res.items.map((item) => item.id);
|
const userMap = new Map(allusers.map((u) => [u.key, u]));
|
||||||
setTargetKeys(keys);
|
|
||||||
form.setFieldsValue({
|
if (currentData?.id) {
|
||||||
access_policy: currentData.access_policy,
|
queryModelAccessUserList(currentData.id).then((res) => {
|
||||||
users: res.items.map((item) => ({ id: item.id }))
|
const keys = res.items.map((item) => item.id);
|
||||||
|
setTargetKeys(keys);
|
||||||
|
|
||||||
|
let hasAdmin = false;
|
||||||
|
let hasInactive = false;
|
||||||
|
|
||||||
|
for (const key of keys) {
|
||||||
|
const user = userMap.get(key);
|
||||||
|
if (!user) continue;
|
||||||
|
if (user.is_admin) hasAdmin = true;
|
||||||
|
if (!user.is_active) hasInactive = true;
|
||||||
|
if (hasAdmin && hasInactive) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
const filterSet = new Set<string>();
|
||||||
|
if (hasAdmin) filterSet.add('admin');
|
||||||
|
if (hasInactive) filterSet.add('inactive');
|
||||||
|
|
||||||
|
setFilterInUsers(filterSet);
|
||||||
|
|
||||||
|
form.setFieldsValue({
|
||||||
|
access_policy: currentData.access_policy,
|
||||||
|
users: res.items.map((item) => ({ id: item.id }))
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
} else {
|
||||||
} else {
|
setTargetKeys([]);
|
||||||
setTargetKeys([]);
|
form.setFieldsValue({ users: [] });
|
||||||
form.setFieldsValue({ users: [] });
|
}
|
||||||
}
|
};
|
||||||
getUserList(queryParams);
|
init();
|
||||||
}, [currentData?.id]);
|
}, [currentData?.id]);
|
||||||
|
|
||||||
const renderFilterDropdown = () => {
|
const renderFilterDropdown = () => {
|
||||||
|
|||||||
@@ -451,7 +451,6 @@ const AddModal: FC<AddModalProps> = (props) => {
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
if (props.deploymentType === 'modelFiles') {
|
if (props.deploymentType === 'modelFiles') {
|
||||||
clearCacheFormValues();
|
|
||||||
form.current?.form?.setFieldsValue({
|
form.current?.form?.setFieldsValue({
|
||||||
...props.initialValues
|
...props.initialValues
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -101,7 +101,12 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
|
|||||||
onValuesChange,
|
onValuesChange,
|
||||||
onOk
|
onOk
|
||||||
} = props;
|
} = props;
|
||||||
const { getScrollElementScrollableHeight } = useWrapperContext();
|
const {
|
||||||
|
getScrollElementScrollableHeight,
|
||||||
|
getScrollElement,
|
||||||
|
osInstance,
|
||||||
|
scrollEventElement
|
||||||
|
} = useWrapperContext();
|
||||||
const { backendOptions, getBackendOptions } = useQueryBackends();
|
const { backendOptions, getBackendOptions } = useQueryBackends();
|
||||||
const { getGPUOptionList, gpuOptions, workerLabelOptions } =
|
const { getGPUOptionList, gpuOptions, workerLabelOptions } =
|
||||||
useGenerateGPUOptions();
|
useGenerateGPUOptions();
|
||||||
@@ -111,6 +116,8 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
|
|||||||
const scheduleType = Form.useWatch('scheduleType', form);
|
const scheduleType = Form.useWatch('scheduleType', form);
|
||||||
const [target, setTarget] = React.useState<string>(TABKeysMap.BASIC);
|
const [target, setTarget] = React.useState<string>(TABKeysMap.BASIC);
|
||||||
|
|
||||||
|
console.log('scroller instance in form:', osInstance, scrollEventElement);
|
||||||
|
|
||||||
const segmentOptions = [
|
const segmentOptions = [
|
||||||
{
|
{
|
||||||
value: TABKeysMap.BASIC,
|
value: TABKeysMap.BASIC,
|
||||||
@@ -162,6 +169,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
|
|||||||
setActiveKey,
|
setActiveKey,
|
||||||
segmentOptions,
|
segmentOptions,
|
||||||
segmentedTop: segmentedTop,
|
segmentedTop: segmentedTop,
|
||||||
|
getScrollElement,
|
||||||
getScrollElementScrollableHeight: getScrollElementScrollableHeight
|
getScrollElementScrollableHeight: getScrollElementScrollableHeight
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ export default function useScrollAfterExpand({
|
|||||||
segmentOptions,
|
segmentOptions,
|
||||||
defaultWait = 300,
|
defaultWait = 300,
|
||||||
segmentedTop = { top: 0, offsetTop: 96 },
|
segmentedTop = { top: 0, offsetTop: 96 },
|
||||||
getScrollElementScrollableHeight
|
getScrollElementScrollableHeight,
|
||||||
|
getScrollElement
|
||||||
}: {
|
}: {
|
||||||
form: any;
|
form: any;
|
||||||
activeKey: string[];
|
activeKey: string[];
|
||||||
@@ -25,6 +26,7 @@ export default function useScrollAfterExpand({
|
|||||||
scrollHeight: number;
|
scrollHeight: number;
|
||||||
scrollTop: number;
|
scrollTop: number;
|
||||||
};
|
};
|
||||||
|
getScrollElement?: () => HTMLElement | null;
|
||||||
defaultWait?: number;
|
defaultWait?: number;
|
||||||
segmentedTop: {
|
segmentedTop: {
|
||||||
top: number;
|
top: number;
|
||||||
|
|||||||
Reference in New Issue
Block a user