From 79c72430ab6c88e4888512b45de93736b30cf5f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Sun, 1 Mar 2026 11:30:03 +0300 Subject: [PATCH] =?UTF-8?q?Wizard=20g=C3=BCncellemeleri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ListForms/Wizard/ListFormWizardDto.cs | 7 + .../ListForms/ListFormWizardAppService.cs | 4 +- .../Seeds/LanguagesData.json | 220 +++++++++++++++--- ui/src/proxy/admin/list-form/models.ts | 6 + ui/src/views/admin/listForm/Wizard.tsx | 11 + ui/src/views/admin/listForm/WizardStep1.tsx | 13 +- ui/src/views/admin/listForm/WizardStep2.tsx | 166 +++++++++---- 7 files changed, 337 insertions(+), 90 deletions(-) diff --git a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs index 379d649..e91cef7 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs @@ -12,6 +12,13 @@ public class ListFormWizardDto public bool IsTenant { get; set; } public bool IsBranch { get; set; } + public bool IsOrganizationUnit { get; set; } + + public bool AllowAdding { get; set; } + public bool AllowEditing { get; set; } + public bool AllowDeleting { get; set; } + public bool AllowDetail { get; set; } + public bool ConfirmDelete { get; set; } public string LanguageTextMenuEn { get; set; } public string LanguageTextMenuTr { get; set; } diff --git a/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs b/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs index 38b43be..d4f95f1 100644 --- a/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs +++ b/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs @@ -198,7 +198,7 @@ public class ListFormWizardAppService( DataSourceCode = input.DataSourceCode, IsTenant = input.IsTenant, IsBranch = input.IsBranch, - IsOrganizationUnit = false, + IsOrganizationUnit = input.IsOrganizationUnit, SelectCommandType = input.SelectCommandType, SelectCommand = input.SelectCommand, KeyFieldName = input.KeyFieldName, @@ -215,7 +215,7 @@ public class ListFormWizardAppService( DeleteCommand = Wizard.DefaultDeleteCommand(nameof(TableNameEnum.Country)), DeleteFieldsDefaultValueJson = Wizard.DefaultDeleteFieldsDefaultValueJson(input.KeyFieldDbSourceType), PagerOptionJson = Wizard.DefaultPagerOptionJson, - EditingOptionJson = Wizard.DefaultEditingOptionJson(titleLangKey, 600, 500, true, true, true, true, false), + EditingOptionJson = Wizard.DefaultEditingOptionJson(titleLangKey, 600, 500, input.AllowDeleting, input.AllowAdding, input.AllowEditing, input.ConfirmDelete, false, input.AllowDetail), EditingFormJson = editingFormDtos.Count > 0 ? JsonSerializer.Serialize(editingFormDtos) : null, }, autoSave: true); diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json index 0386f95..ea653e6 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json @@ -3183,8 +3183,8 @@ { "resourceName": "Platform", "key": "ListForms.ListForm.GridMenu", - "en": "Menu", - "tr": "Menü" + "en": "MENU", + "tr": "MENÜ" }, { "resourceName": "Platform", @@ -15764,42 +15764,6 @@ "en": "Deploy", "tr": "Dağıtım" }, - { - "resourceName": "Platform", - "key": "App.Listforms.Wizard", - "en": "List Form Wizard", - "tr": "Liste Form Sihirbazı" - }, - { - "resourceName": "Platform", - "key": "ListForms.Wizard.MenuInfo", - "en": "Menu Information", - "tr": "Menü Bilgileri" - }, - { - "resourceName": "Platform", - "key": "ListForms.Wizard.ListFormSettings", - "en": "List Form Settings", - "tr": "Liste Form Ayarları" - }, - { - "resourceName": "Platform", - "key": "ListForms.Wizard.ListFormFields", - "en": "List Form Fields", - "tr": "Liste Form Alanları" - }, - { - "resourceName": "Platform", - "key": "ListForms.Wizard.Deploy", - "en": "Deploy", - "tr": "Yayınla" - }, - { - "resourceName": "Platform", - "key": "ListForms.FormBilgileriKaydedildi", - "en": "Form Information Saved", - "tr": "Form Bilgileri Kaydedildi" - }, { "resourceName": "Platform", "key": "Back", @@ -15818,6 +15782,12 @@ "en": "Helper Codes", "tr": "Yardımcı Kodlar" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step1.WizardNameHint", + "en": "Used to generate ListForm Code and Menu Code", + "tr": "ListForm Kodu ve Menü Kodu oluşturmak için kullanılır" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step1.WizardName", @@ -15890,6 +15860,24 @@ "en": "Delete", "tr": "Sil" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step1.MenuCodeHint", + "en": "Auto-derived, editable", + "tr": "Otomatik oluşturulur, düzenlenebilir" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Add", + "en": "Add", + "tr": "Ekle" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.ClearSelection", + "en": "Clear Selection", + "tr": "Seçimi Temizle" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step2.ListFormCode", @@ -15920,6 +15908,30 @@ "en": "Key Field Name", "tr": "Anahtar Alan Adı" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.SelectAll", + "en": "Select All", + "tr": "Tümünü Seç" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.ClearAll", + "en": "Clear All", + "tr": "Tümünü Temizle" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.ListFormCodeHint", + "en": "Auto-derived from Wizard Name, editable", + "tr": "Sihirbaz Adından Otomatik Oluşturulur, Düzenlenebilir" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.Columns", + "en": "Columns", + "tr": "Sütunlar" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step2.IsTenant", @@ -15932,6 +15944,72 @@ "en": "Is Branch?", "tr": "Şubeye Özgü?" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.IsOrganizationUnit", + "en": "Is Organization Unit?", + "tr": "Kurumsal Birime Özgü?" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.AllowAdding", + "en": "Allow Adding?", + "tr": "Ekleme İzni?" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.AllowEditing", + "en": "Allow Editing?", + "tr": "Düzenleme İzni?" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.AllowDeleting", + "en": "Allow Deleting?", + "tr": "Silme İzni?" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.AllowDetail", + "en": "Allow Detail?", + "tr": "Detay İzni?" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.ConfirmDelete", + "en": "Confirm Delete?", + "tr": "Silme Onayı?" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.ColumnSelection", + "en": "Column Selection", + "tr": "Sütun Seçimi" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.Tables", + "en": "Tables", + "tr": "Tablolar" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.StoredProcedures", + "en": "Stored Procedures", + "tr": "Depolmuş Yordamlar" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.Views", + "en": "Views", + "tr": "Görünümler" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.Functions", + "en": "Functions", + "tr": "Fonksiyonlar" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step2.TitleTextEnglish", @@ -15980,6 +16058,36 @@ "en": "Span", "tr": "Genişlik" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step3.Cols", + "en": "Columns", + "tr": "Sütun Sayısı" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step3.AddGroup", + "en": "Add Group", + "tr": "Grup Ekle" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step3.AddAll", + "en": "Add All", + "tr": "Tümünü Ekle" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step3.NoGroupsYet", + "en": "No Groups Yet", + "tr": "Henüz Grup Yok" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step3.AllColumnsAdded", + "en": "All Columns Added", + "tr": "Tüm Sütunlar Eklendi" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step3.Remove", @@ -16148,6 +16256,18 @@ "en": "Column", "tr": "Sütun" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.DeployAndSave", + "en": "Deploy And Save", + "tr": "Deploy Et ve Kaydet" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.AllInfoReady", + "en": "All Information Is Ready", + "tr": "Tüm Bilgiler Hazır" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step4.DeployLog", @@ -16219,6 +16339,30 @@ "key": "ListForms.Wizard.Step4.Log.Completed", "en": "Completed ✓", "tr": "Tamamlandı ✓" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.Log.SelectIcon", + "en": "Select icon... ✓", + "tr": "İkon seç... ✓" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step1.SelectIcon", + "en": "Select icon...", + "tr": "İkon seç..." + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.Loading", + "en": "Loading...", + "tr": "Yükleniyor..." + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step2.SelectKeyColumn", + "en": "Select key column", + "tr": "Anahtar sütunu seç" } ] } \ No newline at end of file diff --git a/ui/src/proxy/admin/list-form/models.ts b/ui/src/proxy/admin/list-form/models.ts index a6a1d5e..6efa5e9 100644 --- a/ui/src/proxy/admin/list-form/models.ts +++ b/ui/src/proxy/admin/list-form/models.ts @@ -37,6 +37,12 @@ export interface ListFormWizardDto { menuCode: string isTenant: boolean isBranch: boolean + isOrganizationUnit: boolean + allowAdding: boolean + allowEditing: boolean + allowDeleting: boolean + confirmDelete: boolean + allowDetail: boolean languageTextMenuEn: string languageTextMenuTr: string languageTextTitleEn: string diff --git a/ui/src/views/admin/listForm/Wizard.tsx b/ui/src/views/admin/listForm/Wizard.tsx index 8a88098..a723b44 100644 --- a/ui/src/views/admin/listForm/Wizard.tsx +++ b/ui/src/views/admin/listForm/Wizard.tsx @@ -37,6 +37,12 @@ const initialValues: ListFormWizardDto = { menuCode: '', isTenant: false, isBranch: false, + isOrganizationUnit: false, + allowAdding: true, + allowEditing: true, + allowDeleting: true, + confirmDelete: true, + allowDetail: false, languageTextMenuEn: '', languageTextMenuTr: '', languageTextTitleEn: '', @@ -79,6 +85,11 @@ const step2ValidationSchema = Yup.object().shape({ keyFieldDbSourceType: Yup.number().required(), isTenant: Yup.boolean(), isBranch: Yup.boolean(), + isOrganizationUnit: Yup.boolean(), + allowAdding: Yup.boolean(), + allowEditing: Yup.boolean(), + allowDeleting: Yup.boolean(), + confirmDelete: Yup.boolean(), }) const listFormValidationSchema = step1ValidationSchema.concat(step2ValidationSchema) diff --git a/ui/src/views/admin/listForm/WizardStep1.tsx b/ui/src/views/admin/listForm/WizardStep1.tsx index cdfd100..496bd67 100644 --- a/ui/src/views/admin/listForm/WizardStep1.tsx +++ b/ui/src/views/admin/listForm/WizardStep1.tsx @@ -394,6 +394,7 @@ function IconPickerField({ value, onChange, invalid }: IconPickerFieldProps) { : ALL_ICON_ENTRIES const displayed = filtered.slice(0, limit) const hasMore = displayed.length < filtered.length + const { translate } = useLocalization() useEffect(() => { setLimit(ICON_PAGE_SIZE) @@ -422,7 +423,7 @@ function IconPickerField({ value, onChange, invalid }: IconPickerFieldProps) { {value} ) : ( - Select icon... + {translate('::ListForms.Wizard.Step1.SelectIcon') || 'Select icon...'} )} setSearch(e.target.value)} - placeholder="Search icons… (e.g. FaHome, FcSettings)" + placeholder="Search icons… (FaHome, FcSettings)" className="flex-1 px-2 py-1.5 text-sm rounded border border-gray-200 dark:border-gray-600 dark:bg-gray-700 dark:text-gray-100 outline-none focus:border-indigo-400" /> {filtered.length} icons @@ -761,7 +762,7 @@ const WizardStep1 = ({ onWizardNameChange(e.target.value.replace(/\s/g, ''))} @@ -851,7 +852,7 @@ const WizardStep1 = ({ type="text" autoComplete="off" name="menuCode" - placeholder="e.g. App.Wizard.Routes, App.Wizard.Products, App.Wizard.Orders" + placeholder="App.Wizard.Routes, App.Wizard.Products, App.Wizard.Orders" component={Input} disabled={true} /> @@ -886,7 +887,7 @@ const WizardStep1 = ({ type="text" autoComplete="off" name="languageTextMenuEn" - placeholder={translate('::ListForms.Wizard.Step1.EnglishMenuTextPlaceholder') || 'English Menu Text'} + placeholder={translate('::ListForms.Wizard.Step1.DisplayNameEnglish') || 'English Menu Text'} component={Input} /> @@ -902,7 +903,7 @@ const WizardStep1 = ({ type="text" autoComplete="off" name="languageTextMenuTr" - placeholder={translate('::ListForms.Wizard.Step1.TurkishMenuTextPlaceholder') || 'Turkish Menu Text'} + placeholder={translate('::ListForms.Wizard.Step1.DisplayNameTurkish') || 'Turkish Menu Text'} component={Input} /> diff --git a/ui/src/views/admin/listForm/WizardStep2.tsx b/ui/src/views/admin/listForm/WizardStep2.tsx index a745694..cc7122e 100644 --- a/ui/src/views/admin/listForm/WizardStep2.tsx +++ b/ui/src/views/admin/listForm/WizardStep2.tsx @@ -70,7 +70,8 @@ const WizardStep2 = ({ !values.languageTextDescTr && translate('::ListForms.Wizard.Step2.DescriptionTextTurkish'), !values.languageTextTitleEn && translate('::ListForms.Wizard.Step2.TitleTextEnglish'), !values.languageTextTitleTr && translate('::ListForms.Wizard.Step2.TitleTextTurkish'), - selectedColumns.size === 0 && (translate('::ListForms.Wizard.Step2.ColumnSelection') || 'Sütun seçimi'), + selectedColumns.size === 0 && + (translate('::ListForms.Wizard.Step2.ColumnSelection') || 'Sütun seçimi'), ].filter(Boolean) as string[] const step2CanGo = step2Missing.length === 0 @@ -85,7 +86,8 @@ const WizardStep2 = ({ asterisk={true} extra={ - {translate('::ListForms.Wizard.Step2.ListFormCodeHint') || 'Auto-derived from Wizard Name, editable'} + {translate('::ListForms.Wizard.Step2.ListFormCodeHint') || + 'Auto-derived from Wizard Name, editable'} } > @@ -93,7 +95,7 @@ const WizardStep2 = ({ type="text" autoComplete="off" name="listFormCode" - placeholder="e.g. App.Wizard.Routes" + placeholder="App.Wizard.Routes" component={Input} disabled={true} /> @@ -126,9 +128,7 @@ const WizardStep2 = ({ const val = option?.value ?? '' form.setFieldValue(field.name, val) onDataSourceSelect(val) - onDataSourceNewChange( - !!val && !dataSourceList.some((a) => a.value === val), - ) + onDataSourceNewChange(!!val && !dataSourceList.some((a) => a.value === val)) }} /> )} @@ -162,9 +162,8 @@ const WizardStep2 = ({ extra={ values.selectCommandType ? ( - {selectCommandTypeOptions.find( - (o: any) => o.value === values.selectCommandType, - )?.label ?? String(values.selectCommandType)} + {selectCommandTypeOptions.find((o: any) => o.value === values.selectCommandType) + ?.label ?? String(values.selectCommandType)} ) : null } @@ -184,7 +183,9 @@ const WizardStep2 = ({ })), }, { - label: translate('::ListForms.Wizard.Step2.StoredProcedures') || 'Stored Procedures', + label: + translate('::ListForms.Wizard.Step2.StoredProcedures') || + 'Stored Procedures', options: dbObjects.storedProcedures.map((p) => ({ label: p.procedureName, value: p.procedureName, @@ -222,7 +223,12 @@ const WizardStep2 = ({ isClearable isLoading={isLoadingDbObjects} options={grouped} - placeholder={isLoadingDbObjects ? (translate('::ListForms.Wizard.Step2.Loading') || 'Loading…') : (translate('::ListForms.Wizard.Step2.SelectCommandPlaceholder') || 'Tablo/View/SP seç veya SQL yaz…')} + placeholder={ + isLoadingDbObjects + ? translate('::ListForms.Wizard.Step2.Loading') || 'Loading…' + : translate('::ListForms.Wizard.Step2.SelectCommand') || + 'Tablo/View/SP seç veya SQL yaz…' + } value={field.value ? { label: field.value, value: field.value } : null} onChange={(option: any) => { if (!option) { @@ -282,7 +288,11 @@ const WizardStep2 = ({ form={form} isClearable isLoading={isLoadingColumns} - placeholder={isLoadingColumns ? (translate('::ListForms.Wizard.Step2.ColumnsLoading') || 'Sütunlar yükleniyor…') : (translate('::ListForms.Wizard.Step2.SelectKeyColumn') || 'Key sütunu seç…')} + placeholder={ + isLoadingColumns + ? translate('::ListForms.Wizard.Step2.ColumnsLoading') || 'Sütunlar yükleniyor…' + : translate('::ListForms.Wizard.Step2.SelectKeyColumn') || 'Key sütunu seç…' + } options={selectCommandColumns.map((c) => ({ label: `${c.columnName} (${c.dataType})`, value: c.columnName, @@ -309,32 +319,80 @@ const WizardStep2 = ({ )} + - - - +
+
+ + + - - - + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + +
@@ -348,7 +406,9 @@ const WizardStep2 = ({ type="text" autoComplete="off" name="languageTextTitleEn" - placeholder={translate('::ListForms.Wizard.Step2.EnglishTitlePlaceholder') || 'English Title Text'} + placeholder={ + translate('::ListForms.Wizard.Step2.TitleTextEnglish') || 'English Title Text' + } component={Input} /> @@ -363,7 +423,9 @@ const WizardStep2 = ({ type="text" autoComplete="off" name="languageTextTitleTr" - placeholder={translate('::ListForms.Wizard.Step2.TurkishTitlePlaceholder') || 'Turkish Title Text'} + placeholder={ + translate('::ListForms.Wizard.Step2.TitleTextTurkish') || 'Turkish Title Text' + } component={Input} /> @@ -378,7 +440,10 @@ const WizardStep2 = ({ type="text" autoComplete="off" name="languageTextDescEn" - placeholder={translate('::ListForms.Wizard.Step2.EnglishDescPlaceholder') || 'English Description Text'} + placeholder={ + translate('::ListForms.Wizard.Step2.DescriptionTextEnglish') || + 'English Description Text' + } component={Input} /> @@ -393,7 +458,10 @@ const WizardStep2 = ({ type="text" autoComplete="off" name="languageTextDescTr" - placeholder={translate('::ListForms.Wizard.Step2.TurkishDescPlaceholder') || 'Turkish Description Text'} + placeholder={ + translate('::ListForms.Wizard.Step2.DescriptionTextTurkish') || + 'Turkish Description Text' + } component={Input} /> @@ -420,7 +488,8 @@ const WizardStep2 = ({ {translate('::ListForms.Wizard.Step2.ClearAll') || 'Tümünü Kaldır'} - {selectedColumns.size}/{selectCommandColumns.length} {translate('::ListForms.Wizard.Step4.StatColumn')} + {selectedColumns.size}/{selectCommandColumns.length}{' '} + {translate('::ListForms.Wizard.Step4.StatColumn')}
) : null @@ -428,10 +497,13 @@ const WizardStep2 = ({ >
{isLoadingColumns ? ( -
{translate('::ListForms.Wizard.Step2.ColumnsLoading') || 'Sütunlar yükleniyor…'}
+
+ {translate('::ListForms.Wizard.Step2.ColumnsLoading') || 'Sütunlar yükleniyor…'} +
) : selectCommandColumns.length === 0 ? (
- {translate('::ListForms.Wizard.Step2.ColumnsWillAppear') || 'Select Command seçilince sütunlar burada görünecek'} + {translate('::ListForms.Wizard.Step2.ColumnsWillAppear') || + 'Select Command seçilince sütunlar burada görünecek'}
) : (
@@ -476,7 +548,13 @@ const WizardStep2 = ({ ⚠ Zorunlu: {step2Missing.join(', ')} )} -