From 6ae74813e00b6f26c1baecf6e6b1a6d59d55deac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Thu, 18 Sep 2025 09:56:04 +0300 Subject: [PATCH] ExtraFilterDto ControlType eklendi --- .../GridOptionsDto/ExtraFilterDto.cs | 1 + .../Seeds/SeederData.json | 6 ++ .../Queries/ExtraFilter.cs | 1 + ui/src/proxy/admin/list-form/models.ts | 5 ++ ui/src/proxy/form/models.ts | 1 + .../listForm/edit/FormTabExtraFilters.tsx | 2 + .../JsonRowOpDialogExtraFilter.tsx | 48 +++++++----- ui/src/views/list/Grid.tsx | 1 + ui/src/views/list/GridColumnData.ts | 1 + ui/src/views/list/GridExtraFilterToolbar.tsx | 75 ++++++++++++++----- 10 files changed, 103 insertions(+), 38 deletions(-) diff --git a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs index 0d207e60..f82a464a 100644 --- a/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs +++ b/api/src/Kurs.Platform.Application.Contracts/ListForms/GridOptionsDto/ExtraFilterDto.cs @@ -8,6 +8,7 @@ public class ExtraFilterDto public string Caption { get; set; } public string Operator { get; set; } public string DefaultValue { get; set; } + public string ControlType { get; set; } public List Items { get; set; } } diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json index 67b97ca5..222341bb 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json @@ -12292,6 +12292,12 @@ "en": "Default Value", "tr": "Varsayılan Değer" }, + { + "resourceName": "Platform", + "key": "ListForms.ListFormEdit.ExtraControlType", + "en": "Control Type", + "tr": "Kontrol Türü" + }, { "resourceName": "Platform", "key": "ListForms.ListFormEdit.ExtraSqlQuery", diff --git a/api/src/Kurs.Platform.Domain/Queries/ExtraFilter.cs b/api/src/Kurs.Platform.Domain/Queries/ExtraFilter.cs index 183f19f4..16998f74 100644 --- a/api/src/Kurs.Platform.Domain/Queries/ExtraFilter.cs +++ b/api/src/Kurs.Platform.Domain/Queries/ExtraFilter.cs @@ -9,6 +9,7 @@ public class ExtraFilter : ValueObject public string Caption { get; set; } public string Operator { get; set; } public string DefaultValue { get; set; } + public string ControlType { get; set; } public string SqlQuery { get; set; } protected override IEnumerable GetAtomicValues() diff --git a/ui/src/proxy/admin/list-form/models.ts b/ui/src/proxy/admin/list-form/models.ts index 9f4c052a..732f7144 100644 --- a/ui/src/proxy/admin/list-form/models.ts +++ b/ui/src/proxy/admin/list-form/models.ts @@ -82,3 +82,8 @@ export const ListFormEditTabs = { Customization: 'customization', ExtraFilter: 'extraFilter', } as const + +export const extraFilterControlTypeOptions = [ + { value: 'Select', label: 'Select' }, + { value: 'TextBox', label: 'TextBox' }, +] diff --git a/ui/src/proxy/form/models.ts b/ui/src/proxy/form/models.ts index 8066c248..86e87a01 100644 --- a/ui/src/proxy/form/models.ts +++ b/ui/src/proxy/form/models.ts @@ -731,6 +731,7 @@ export interface ExtraFilterDto { caption: string operator: string defaultValue?: string + controlType: string items?: ExtraFilterItemsDto[] } diff --git a/ui/src/views/admin/listForm/edit/FormTabExtraFilters.tsx b/ui/src/views/admin/listForm/edit/FormTabExtraFilters.tsx index dc391cea..4892449a 100644 --- a/ui/src/views/admin/listForm/edit/FormTabExtraFilters.tsx +++ b/ui/src/views/admin/listForm/edit/FormTabExtraFilters.tsx @@ -58,6 +58,7 @@ function FormTabExtraFilters(props: { listFormCode: string }) { {translate('::ListForms.ListFormEdit.ExtraCaption')} {translate('::ListForms.ListFormEdit.ExtraOperator')} {translate('::ListForms.ListFormEdit.ExtraDefaultValue')} + {translate('::ListForms.ListFormEdit.ExtraControlType')} {translate('::ListForms.ListFormEdit.ExtraSqlQuery')} @@ -107,6 +108,7 @@ function FormTabExtraFilters(props: { listFormCode: string }) { {row.caption} {row.operator} {row.defaultValue} + {row.controlType} {row.sqlQuery} ))} diff --git a/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx b/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx index 87618e59..5b2b5aee 100644 --- a/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx +++ b/ui/src/views/admin/listForm/edit/json-row-operations/JsonRowOpDialogExtraFilter.tsx @@ -8,7 +8,7 @@ import { Select, toast, } from '@/components/ui' -import { ListFormJsonRowDto } from '@/proxy/admin/list-form/models' +import { extraFilterControlTypeOptions, ListFormJsonRowDto } from '@/proxy/admin/list-form/models' import { SelectBoxOption } from '@/shared/types' import { useStoreActions, useStoreState } from '@/store' import { useLocalization } from '@/utils/hooks/useLocalization' @@ -32,7 +32,12 @@ const schema = object().shape({ caption: string().required('Caption Required'), operator: string().required('Operator Required'), defaultValue: string(), - sqlQuery: string().required('SQL Query Required'), + controlType: string().required('Control Type Required'), + sqlQuery: string().when('controlType', { + is: (val: string) => val === 'Select', + then: (schema) => schema.required('SQL Query Required'), + otherwise: (schema) => schema.notRequired(), + }), }) function JsonRowOpDialogExtraFilter({ @@ -48,27 +53,9 @@ function JsonRowOpDialogExtraFilter({ data: JsonRowDialogData | undefined setData: Dispatch> }) { - const [permissionOptions, setPermissionOptions] = useState([]) const { translate } = useLocalization() - const permissions: Record | undefined = useStoreState( - (state) => state.abpConfig.config?.auth.grantedPolicies, - ) const [fieldList, setFieldList] = useState([]) - - useEffect(() => { - if (permissions) { - setPermissionOptions( - Object.keys(permissions).map((key) => { - return { - value: key, - label: key, - } - }), - ) - } - }, [permissions]) - const { setJsonValue } = useStoreActions((a) => a.admin) const handleClose = async (e?: any) => { @@ -147,6 +134,7 @@ function JsonRowOpDialogExtraFilter({ caption: '', operator: '=', defaultValue: '', + controlType: 'Select', sqlQuery: '', } } @@ -260,6 +248,26 @@ function JsonRowOpDialogExtraFilter({ /> + + + {({ field, form }: FieldProps) => ( + - setExtraFilters((prev) => - prev.map((f) => - f.fieldName === fs.fieldName ? { ...f, value: e.target.value } : f, - ), - ) - } - > - {!fs.defaultValue && } - {fs.items.map((item: any) => ( - - ))} - + + {fs.controlType === 'Select' ? ( + + ) : ( + + setInputValues((prev) => ({ + ...prev, + [fs.fieldName]: e.target.value, + })) + } + onKeyDown={(e) => { + if (e.key === 'Enter') { + handleSave(inputValues[fs.fieldName] ?? '') + } + }} + onBlur={(e) => handleSave(e.target.value)} + /> + )} ) })}