Wizard Language Key ve Text bilgileri eklendi.
This commit is contained in:
parent
85b498a477
commit
b7092cf9cc
8 changed files with 635 additions and 172 deletions
|
|
@ -166,6 +166,7 @@ public class ListFormWizardAppService(
|
||||||
ColSpan = g.ColCount,
|
ColSpan = g.ColCount,
|
||||||
ItemType = "group",
|
ItemType = "group",
|
||||||
Items = g.Items
|
Items = g.Items
|
||||||
|
.Where(i => i.DataField != input.KeyFieldName)
|
||||||
.Select((it, ii) => new EditingFormItemDto
|
.Select((it, ii) => new EditingFormItemDto
|
||||||
{
|
{
|
||||||
Order = ii + 1,
|
Order = ii + 1,
|
||||||
|
|
@ -230,7 +231,7 @@ public class ListFormWizardAppService(
|
||||||
ListFormCode = input.ListFormCode,
|
ListFormCode = input.ListFormCode,
|
||||||
FieldName = item.DataField,
|
FieldName = item.DataField,
|
||||||
CaptionName = item.DataField,
|
CaptionName = item.DataField,
|
||||||
Visible = true,
|
Visible = item.DataField != input.KeyFieldName,
|
||||||
IsActive = true,
|
IsActive = true,
|
||||||
ListOrderNo = fieldOrder,
|
ListOrderNo = fieldOrder,
|
||||||
SourceDbType = item.DbSourceType,
|
SourceDbType = item.DbSourceType,
|
||||||
|
|
|
||||||
|
|
@ -1398,36 +1398,6 @@
|
||||||
"en": "Form Management",
|
"en": "Form Management",
|
||||||
"tr": "Form Yönetimi"
|
"tr": "Form Yönetimi"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"resourceName": "Platform",
|
|
||||||
"key": "App.Listforms.Wizard",
|
|
||||||
"en": "Listform Wizard",
|
|
||||||
"tr": "Listform 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 Formu Ayarları"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"resourceName": "Platform",
|
|
||||||
"key": "ListForms.Wizard.ListFormFields",
|
|
||||||
"en": "List Form Fields",
|
|
||||||
"tr": "Liste Formu Alanları"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"resourceName": "Platform",
|
|
||||||
"key": "ListForms.Wizard.Deploy",
|
|
||||||
"en": "Deploy",
|
|
||||||
"tr": "Dağıtım"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"resourceName": "Platform",
|
"resourceName": "Platform",
|
||||||
"key": "App.Listforms.DataSource",
|
"key": "App.Listforms.DataSource",
|
||||||
|
|
@ -15763,6 +15733,492 @@
|
||||||
"key": "App.Listform.ListformField.ZoneTypeId",
|
"key": "App.Listform.ListformField.ZoneTypeId",
|
||||||
"en": "Zone Type",
|
"en": "Zone Type",
|
||||||
"tr": "Bölge Türü"
|
"tr": "Bölge Türü"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "App.Listforms.Wizard",
|
||||||
|
"en": "Listform Wizard",
|
||||||
|
"tr": "Listform 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 Formu Ayarları"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.ListFormFields",
|
||||||
|
"en": "List Form Fields",
|
||||||
|
"tr": "Liste Formu Alanları"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Deploy",
|
||||||
|
"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",
|
||||||
|
"en": "Back",
|
||||||
|
"tr": "Geri"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "Next",
|
||||||
|
"en": "Next",
|
||||||
|
"tr": "İleri"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "Helper Codes",
|
||||||
|
"en": "Helper Codes",
|
||||||
|
"tr": "Yardımcı Kodlar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.WizardName",
|
||||||
|
"en": "Wizard Name",
|
||||||
|
"tr": "Sihirbaz Adı"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.MenuParent",
|
||||||
|
"en": "Menu Parent",
|
||||||
|
"tr": "Üst Menü"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.MenuCode",
|
||||||
|
"en": "Menu Code",
|
||||||
|
"tr": "Menü Kodu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.MenuIcon",
|
||||||
|
"en": "Menu Icon",
|
||||||
|
"tr": "Menü İkonu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.DisplayNameEnglish",
|
||||||
|
"en": "Display Name (English)",
|
||||||
|
"tr": "Görünen Ad (İngilizce)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.DisplayNameTurkish",
|
||||||
|
"en": "Display Name (Turkish)",
|
||||||
|
"tr": "Görünen Ad (Türkçe)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.PermissionGroupName",
|
||||||
|
"en": "Permission Group Name",
|
||||||
|
"tr": "İzin Grubu Adı"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.NoMenusAvailable",
|
||||||
|
"en": "No menus available",
|
||||||
|
"tr": "Menü bulunamadı"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.AddNewMenu",
|
||||||
|
"en": "Add New Menu",
|
||||||
|
"tr": "Yeni Menü Ekle"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.ShortName",
|
||||||
|
"en": "Short Name",
|
||||||
|
"tr": "Kısa Ad"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.Rename",
|
||||||
|
"en": "Rename",
|
||||||
|
"tr": "Yeniden Adlandır"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step1.Delete",
|
||||||
|
"en": "Delete",
|
||||||
|
"tr": "Sil"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.ListFormCode",
|
||||||
|
"en": "ListForm Code",
|
||||||
|
"tr": "ListForm Kodu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.DataSourceCode",
|
||||||
|
"en": "Data Source Code",
|
||||||
|
"tr": "Veri Kaynağı Kodu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.ConnectionString",
|
||||||
|
"en": "Connection String",
|
||||||
|
"tr": "Bağlantı Dizisi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.SelectCommand",
|
||||||
|
"en": "Select Command",
|
||||||
|
"tr": "Sorgu Komutu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.KeyFieldName",
|
||||||
|
"en": "Key Field Name",
|
||||||
|
"tr": "Anahtar Alan Adı"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.IsTenant",
|
||||||
|
"en": "Is Tenant?",
|
||||||
|
"tr": "Kiracıya Özgü?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.IsBranch",
|
||||||
|
"en": "Is Branch?",
|
||||||
|
"tr": "Şubeye Özgü?"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.TitleTextEnglish",
|
||||||
|
"en": "Title Text (English)",
|
||||||
|
"tr": "Başlık Metni (İngilizce)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.TitleTextTurkish",
|
||||||
|
"en": "Title Text (Turkish)",
|
||||||
|
"tr": "Başlık Metni (Türkçe)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.DescriptionTextEnglish",
|
||||||
|
"en": "Description Text (English)",
|
||||||
|
"tr": "Açıklama Metni (İngilizce)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.DescriptionTextTurkish",
|
||||||
|
"en": "Description Text (Turkish)",
|
||||||
|
"tr": "Açıklama Metni (Türkçe)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step2.SelectCommandColumnsHint",
|
||||||
|
"en": "Columns load after selecting a Select Command",
|
||||||
|
"tr": "Select Command seçince sütunlar yüklenir"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step3.EditorOptions",
|
||||||
|
"en": "Editor Options",
|
||||||
|
"tr": "Editör Seçenekleri"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step3.EditorScript",
|
||||||
|
"en": "Editor Script",
|
||||||
|
"tr": "Editör Scripti"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step3.Span",
|
||||||
|
"en": "Span",
|
||||||
|
"tr": "Genişlik"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step3.Remove",
|
||||||
|
"en": "Remove",
|
||||||
|
"tr": "Kaldır"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuInfo",
|
||||||
|
"en": "Menu Information",
|
||||||
|
"tr": "Menü Bilgileri"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.ListFormSettings",
|
||||||
|
"en": "ListForm Settings",
|
||||||
|
"tr": "ListForm Ayarları"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.WizardName",
|
||||||
|
"en": "Wizard Name",
|
||||||
|
"tr": "Wizard Adı"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuCode",
|
||||||
|
"en": "Menu Code",
|
||||||
|
"tr": "Menü Kodu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuParent",
|
||||||
|
"en": "Menu Parent",
|
||||||
|
"tr": "Üst Menü"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.PermissionGroup",
|
||||||
|
"en": "Permission Group",
|
||||||
|
"tr": "İzin Grubu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Icon",
|
||||||
|
"en": "Icon",
|
||||||
|
"tr": "İkon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuTr",
|
||||||
|
"en": "Menu (TR)",
|
||||||
|
"tr": "Menü (TR)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuEn",
|
||||||
|
"en": "Menu (EN)",
|
||||||
|
"tr": "Menü (EN)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuParentTr",
|
||||||
|
"en": "Parent Menu (TR)",
|
||||||
|
"tr": "Üst Menü (TR)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.MenuParentEn",
|
||||||
|
"en": "Parent Menu (EN)",
|
||||||
|
"tr": "Üst Menü (EN)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.ListFormCode",
|
||||||
|
"en": "ListForm Code",
|
||||||
|
"tr": "ListForm Kodu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.TitleTr",
|
||||||
|
"en": "Title (TR)",
|
||||||
|
"tr": "Başlık (TR)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.TitleEn",
|
||||||
|
"en": "Title (EN)",
|
||||||
|
"tr": "Başlık (EN)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.DescTr",
|
||||||
|
"en": "Description (TR)",
|
||||||
|
"tr": "Açıklama (TR)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.DescEn",
|
||||||
|
"en": "Description (EN)",
|
||||||
|
"tr": "Açıklama (EN)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.DataSource",
|
||||||
|
"en": "Data Source",
|
||||||
|
"tr": "Veri Kaynağı"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.ConnectionString",
|
||||||
|
"en": "Connection String",
|
||||||
|
"tr": "Bağlantı Dizisi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.CommandType",
|
||||||
|
"en": "Command Type",
|
||||||
|
"tr": "Komut Tipi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.SelectCommand",
|
||||||
|
"en": "Select Command",
|
||||||
|
"tr": "Sorgu Komutu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.KeyField",
|
||||||
|
"en": "Key Field",
|
||||||
|
"tr": "Anahtar Alan"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.KeyFieldType",
|
||||||
|
"en": "Key Field Type",
|
||||||
|
"tr": "Anahtar Alan Tipi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.SelectedColumns",
|
||||||
|
"en": "Selected Columns",
|
||||||
|
"tr": "Seçili Sütunlar"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.FormGroups",
|
||||||
|
"en": "Form Groups",
|
||||||
|
"tr": "Form Grupları"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.StatGroup",
|
||||||
|
"en": "Group",
|
||||||
|
"tr": "Grup"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.StatField",
|
||||||
|
"en": "Field",
|
||||||
|
"tr": "Alan"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.StatColumn",
|
||||||
|
"en": "Column",
|
||||||
|
"tr": "Sütun"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.DeployLog",
|
||||||
|
"en": "Deploy Log",
|
||||||
|
"tr": "Deploy Günlüğü"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.DeployStartHint",
|
||||||
|
"en": "Click the button to start deploy.",
|
||||||
|
"tr": "Deploy başlatmak için butona tıklayın."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.DeploySuccess",
|
||||||
|
"en": "ListForm successfully created and deployed!",
|
||||||
|
"tr": "ListForm başarıyla oluşturuldu ve deploy edildi!"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.ValidatingConfig",
|
||||||
|
"en": "Validating configuration…",
|
||||||
|
"tr": "Konfigürasyon doğrulanıyor…"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.CreatingMenu",
|
||||||
|
"en": "Creating menu: {0}",
|
||||||
|
"tr": "Menü oluşturuluyor: {0}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.SavingLanguageTexts",
|
||||||
|
"en": "Saving language texts",
|
||||||
|
"tr": "Dil metinleri kaydediliyor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.ConfiguringPermission",
|
||||||
|
"en": "Configuring permission group: {0}",
|
||||||
|
"tr": "İzin grubu yapılandırılıyor: {0}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.ConnectingDataSource",
|
||||||
|
"en": "Connecting data source: {0}",
|
||||||
|
"tr": "Veri kaynağı bağlanıyor: {0}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.CreatingListForm",
|
||||||
|
"en": "Creating ListForm: {0}",
|
||||||
|
"tr": "ListForm oluşturuluyor: {0}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.SavingFormGroups",
|
||||||
|
"en": "Saving form groups ({0} groups, {1} fields)",
|
||||||
|
"tr": "Form grupları kaydediliyor ({0} grup, {1} alan)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.Deploying",
|
||||||
|
"en": "Deploying to server…",
|
||||||
|
"tr": "Sunucuya deploy ediliyor…"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceName": "Platform",
|
||||||
|
"key": "ListForms.Wizard.Step4.Log.Completed",
|
||||||
|
"en": "Completed ✓",
|
||||||
|
"tr": "Tamamlandı ✓"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { Button, FormContainer, Notification, Steps, toast } from '@/components/ui'
|
import { FormContainer, Notification, Steps, toast } from '@/components/ui'
|
||||||
import { ROUTES_ENUM } from '@/routes/route.constant'
|
import { ROUTES_ENUM } from '@/routes/route.constant'
|
||||||
import { ListFormWizardDto } from '@/proxy/admin/list-form/models'
|
import { ListFormWizardDto } from '@/proxy/admin/list-form/models'
|
||||||
import { SelectBoxOption } from '@/types/shared'
|
import { SelectBoxOption } from '@/types/shared'
|
||||||
|
|
|
||||||
|
|
@ -205,7 +205,7 @@ function TreeNode({
|
||||||
<span className="shrink-0 flex items-center gap-0 opacity-0 group-hover:opacity-100 transition-opacity">
|
<span className="shrink-0 flex items-center gap-0 opacity-0 group-hover:opacity-100 transition-opacity">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
title="Rename"
|
title={translate('::ListForms.Wizard.Step1.Rename')}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
onStartEdit(node.code, node.displayName)
|
onStartEdit(node.code, node.displayName)
|
||||||
|
|
@ -216,7 +216,7 @@ function TreeNode({
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
title="Delete"
|
title={translate('::ListForms.Wizard.Step1.Delete')}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
onDelete(node)
|
onDelete(node)
|
||||||
|
|
@ -278,6 +278,7 @@ function MenuTreeInline({
|
||||||
const [editingCode, setEditingCode] = useState<string | null>(null)
|
const [editingCode, setEditingCode] = useState<string | null>(null)
|
||||||
const [editingValue, setEditingValue] = useState('')
|
const [editingValue, setEditingValue] = useState('')
|
||||||
const [saving, setSaving] = useState(false)
|
const [saving, setSaving] = useState(false)
|
||||||
|
const { translate } = useLocalization()
|
||||||
|
|
||||||
const toggle = (code: string) =>
|
const toggle = (code: string) =>
|
||||||
setExpanded((prev) => {
|
setExpanded((prev) => {
|
||||||
|
|
@ -312,7 +313,7 @@ function MenuTreeInline({
|
||||||
|
|
||||||
const handleDelete = async (node: MenuTreeNode & { id?: string }) => {
|
const handleDelete = async (node: MenuTreeNode & { id?: string }) => {
|
||||||
if (!node.id) return
|
if (!node.id) return
|
||||||
if (!window.confirm(`"${node.displayName}" menüsünü silmek istediğinize emin misiniz?`)) return
|
if (!window.confirm(`"${node.displayName}" ${translate('::ListForms.Wizard.Step1.DeleteMenuConfirm') || 'menüsünü silmek istediğinize emin misiniz?'}`)) return
|
||||||
setSaving(true)
|
setSaving(true)
|
||||||
try {
|
try {
|
||||||
await menuService.delete(node.id)
|
await menuService.delete(node.id)
|
||||||
|
|
@ -352,7 +353,7 @@ function MenuTreeInline({
|
||||||
{isLoading ? (
|
{isLoading ? (
|
||||||
<div className="px-4 py-3 text-sm text-gray-400">Loading…</div>
|
<div className="px-4 py-3 text-sm text-gray-400">Loading…</div>
|
||||||
) : enrichedNodes.length === 0 ? (
|
) : enrichedNodes.length === 0 ? (
|
||||||
<div className="px-4 py-3 text-sm text-gray-400">No menus available</div>
|
<div className="px-4 py-3 text-sm text-gray-400">{translate('::ListForms.Wizard.Step1.NoMenusAvailable') || 'No menus available'}</div>
|
||||||
) : (
|
) : (
|
||||||
enrichedNodes.map((node) => (
|
enrichedNodes.map((node) => (
|
||||||
<TreeNode
|
<TreeNode
|
||||||
|
|
@ -508,6 +509,7 @@ function MenuAddDialog({
|
||||||
order: initialOrder,
|
order: initialOrder,
|
||||||
})
|
})
|
||||||
const [saving, setSaving] = useState(false)
|
const [saving, setSaving] = useState(false)
|
||||||
|
const { translate } = useLocalization()
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isOpen)
|
if (isOpen)
|
||||||
|
|
@ -564,14 +566,14 @@ function MenuAddDialog({
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<div className="flex items-center gap-2 pb-1 border-b border-gray-100 dark:border-gray-700">
|
<div className="flex items-center gap-2 pb-1 border-b border-gray-100 dark:border-gray-700">
|
||||||
<FaPlus className="text-green-500 text-sm" />
|
<FaPlus className="text-green-500 text-sm" />
|
||||||
<h5 className="text-base font-semibold text-gray-800 dark:text-gray-100">Yeni Menü Ekle</h5>
|
<h5 className="text-base font-semibold text-gray-800 dark:text-gray-100">{translate('::ListForms.Wizard.Step1.AddNewMenu')}</h5>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Row 1 — Name | Code */}
|
{/* Row 1 — Name | Code */}
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>
|
<label className={labelCls}>
|
||||||
Name <span className="text-red-500">*</span>
|
{translate('::ListForms.Wizard.Step1.Name') || 'Name'} <span className="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
autoFocus
|
autoFocus
|
||||||
|
|
@ -589,7 +591,7 @@ function MenuAddDialog({
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>
|
<label className={labelCls}>
|
||||||
Code <span className="text-red-500">*</span>
|
{translate('::ListForms.Wizard.Step1.Code') || 'Code'} <span className="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
value={form.code}
|
value={form.code}
|
||||||
|
|
@ -603,7 +605,7 @@ function MenuAddDialog({
|
||||||
{/* Row 3 — Icon (full width) */}
|
{/* Row 3 — Icon (full width) */}
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>
|
<label className={labelCls}>
|
||||||
Icon <span className="text-red-500">*</span>
|
{translate('::ListForms.Wizard.Step4.Icon')} <span className="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<IconPickerField
|
<IconPickerField
|
||||||
value={form.icon}
|
value={form.icon}
|
||||||
|
|
@ -615,7 +617,7 @@ function MenuAddDialog({
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>
|
<label className={labelCls}>
|
||||||
Display Name (English) <span className="text-red-500">*</span>
|
{translate('::ListForms.Wizard.Step1.DisplayNameEnglish')} <span className="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
value={form.menuTextEn}
|
value={form.menuTextEn}
|
||||||
|
|
@ -626,7 +628,7 @@ function MenuAddDialog({
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>
|
<label className={labelCls}>
|
||||||
Display Name (Turkish) <span className="text-red-500">*</span>
|
{translate('::ListForms.Wizard.Step1.DisplayNameTurkish')} <span className="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<input
|
<input
|
||||||
value={form.menuTextTr}
|
value={form.menuTextTr}
|
||||||
|
|
@ -640,15 +642,15 @@ function MenuAddDialog({
|
||||||
{/* Row 4 — Menu Parent | Order */}
|
{/* Row 4 — Menu Parent | Order */}
|
||||||
<div className="grid grid-cols-2 gap-4">
|
<div className="grid grid-cols-2 gap-4">
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>Menu Parent</label>
|
<label className={labelCls}>{translate('::ListForms.Wizard.Step1.MenuParent')}</label>
|
||||||
<input
|
<input
|
||||||
disabled
|
disabled
|
||||||
value={form.parentCode || '(Ana Menü)'}
|
value={form.parentCode || translate('::ListForms.Wizard.Step1.MainMenu') || '(Ana Menü)'}
|
||||||
className={disabledCls}
|
className={disabledCls}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>Sıra (Order)</label>
|
<label className={labelCls}>{translate('::ListForms.Wizard.Step1.Order') || 'Sıra (Order)'}</label>
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
value={form.order}
|
value={form.order}
|
||||||
|
|
@ -660,7 +662,7 @@ function MenuAddDialog({
|
||||||
|
|
||||||
{/* Row 5 — Short Name (full width) */}
|
{/* Row 5 — Short Name (full width) */}
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<label className={labelCls}>Short Name</label>
|
<label className={labelCls}>{translate('::ListForms.Wizard.Step1.ShortName')}</label>
|
||||||
<input
|
<input
|
||||||
value={form.shortName}
|
value={form.shortName}
|
||||||
onChange={(e) => setForm((p) => ({ ...p, shortName: e.target.value }))}
|
onChange={(e) => setForm((p) => ({ ...p, shortName: e.target.value }))}
|
||||||
|
|
@ -672,7 +674,7 @@ function MenuAddDialog({
|
||||||
{/* Footer */}
|
{/* Footer */}
|
||||||
<div className="flex justify-end gap-2 pt-1 border-t border-gray-100 dark:border-gray-700">
|
<div className="flex justify-end gap-2 pt-1 border-t border-gray-100 dark:border-gray-700">
|
||||||
<Button size="sm" variant="plain" onClick={onClose}>
|
<Button size="sm" variant="plain" onClick={onClose}>
|
||||||
İptal
|
{translate('::ListForms.Wizard.Cancel') || 'İptal'}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
size="sm"
|
size="sm"
|
||||||
|
|
@ -686,7 +688,7 @@ function MenuAddDialog({
|
||||||
}
|
}
|
||||||
onClick={handleSave}
|
onClick={handleSave}
|
||||||
>
|
>
|
||||||
Kaydet
|
{translate('::ListForms.Wizard.Save') || 'Kaydet'}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -736,11 +738,11 @@ const WizardStep1 = ({
|
||||||
const [menuDialogInitialOrder, setMenuDialogInitialOrder] = useState(999)
|
const [menuDialogInitialOrder, setMenuDialogInitialOrder] = useState(999)
|
||||||
|
|
||||||
const step1Missing = [
|
const step1Missing = [
|
||||||
!wizardName && 'Wizard Adı',
|
!wizardName && translate('::ListForms.Wizard.Step1.WizardName'),
|
||||||
!values.menuParentCode && 'Menu Parent',
|
!values.menuParentCode && translate('::ListForms.Wizard.Step1.MenuParent'),
|
||||||
!values.permissionGroupName && 'İzin Grubu',
|
!values.permissionGroupName && translate('::ListForms.Wizard.Step1.PermissionGroupName'),
|
||||||
!values.languageTextMenuEn && 'Menü (EN)',
|
!values.languageTextMenuEn && translate('::ListForms.Wizard.Step4.MenuEn'),
|
||||||
!values.languageTextMenuTr && 'Menü (TR)',
|
!values.languageTextMenuTr && translate('::ListForms.Wizard.Step4.MenuTr'),
|
||||||
].filter(Boolean) as string[]
|
].filter(Boolean) as string[]
|
||||||
const step1CanGo = step1Missing.length === 0
|
const step1CanGo = step1Missing.length === 0
|
||||||
|
|
||||||
|
|
@ -748,11 +750,11 @@ const WizardStep1 = ({
|
||||||
<div className="pb-20">
|
<div className="pb-20">
|
||||||
{/* Wizard Name */}
|
{/* Wizard Name */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Wizard Name"
|
label={translate('::ListForms.Wizard.Step1.WizardName')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
extra={
|
extra={
|
||||||
<span className="text-xs ml-2 text-gray-400">
|
<span className="text-xs ml-2 text-gray-400">
|
||||||
Used to generate ListForm Code and Menu Code
|
{translate('::ListForms.Wizard.Step1.WizardNameHint') || 'Used to generate ListForm Code and Menu Code'}
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|
@ -772,7 +774,7 @@ const WizardStep1 = ({
|
||||||
<div>
|
<div>
|
||||||
{/* Menu Parent */}
|
{/* Menu Parent */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Menu Parent"
|
label={translate('::ListForms.Wizard.Step1.MenuParent')}
|
||||||
invalid={errors.menuParentCode && touched.menuParentCode}
|
invalid={errors.menuParentCode && touched.menuParentCode}
|
||||||
errorMessage={errors.menuParentCode}
|
errorMessage={errors.menuParentCode}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
|
|
@ -792,7 +794,7 @@ const WizardStep1 = ({
|
||||||
}}
|
}}
|
||||||
className="flex items-center gap-1 px-2 py-0.5 text-xs rounded bg-green-500 text-white hover:bg-green-600"
|
className="flex items-center gap-1 px-2 py-0.5 text-xs rounded bg-green-500 text-white hover:bg-green-600"
|
||||||
>
|
>
|
||||||
<FaPlus className="text-xs" /> Ekle
|
<FaPlus className="text-xs" /> {translate('::ListForms.Wizard.Add') || 'Ekle'}
|
||||||
</button>
|
</button>
|
||||||
{values.menuParentCode && (
|
{values.menuParentCode && (
|
||||||
<button
|
<button
|
||||||
|
|
@ -804,7 +806,7 @@ const WizardStep1 = ({
|
||||||
}}
|
}}
|
||||||
className="flex items-center gap-1 px-2 py-0.5 text-xs rounded border border-gray-300 dark:border-gray-600 text-gray-500 hover:text-red-500 hover:border-red-400"
|
className="flex items-center gap-1 px-2 py-0.5 text-xs rounded border border-gray-300 dark:border-gray-600 text-gray-500 hover:text-red-500 hover:border-red-400"
|
||||||
>
|
>
|
||||||
<FaTimes className="text-xs" /> Seçimi Kaldır
|
<FaTimes className="text-xs" /> {translate('::ListForms.Wizard.ClearSelection') || 'Seçimi Kaldır'}
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -839,11 +841,11 @@ const WizardStep1 = ({
|
||||||
<div>
|
<div>
|
||||||
{/* Menu Code */}
|
{/* Menu Code */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Menu Code"
|
label={translate('::ListForms.Wizard.Step1.MenuCode')}
|
||||||
invalid={!!(errors.menuCode && touched.menuCode)}
|
invalid={!!(errors.menuCode && touched.menuCode)}
|
||||||
errorMessage={errors.menuCode}
|
errorMessage={errors.menuCode}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
extra={<span className="text-xs ml-2 text-gray-400">Auto-derived, editable</span>}
|
extra={<span className="text-xs ml-2 text-gray-400">{translate('::ListForms.Wizard.Step1.MenuCodeHint') || 'Auto-derived, editable'}</span>}
|
||||||
>
|
>
|
||||||
<Field
|
<Field
|
||||||
type="text"
|
type="text"
|
||||||
|
|
@ -857,7 +859,7 @@ const WizardStep1 = ({
|
||||||
|
|
||||||
{/* Menu Icon */}
|
{/* Menu Icon */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Menu Icon"
|
label={translate('::ListForms.Wizard.Step1.MenuIcon')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.menuIcon && touched.menuIcon)}
|
invalid={!!(errors.menuIcon && touched.menuIcon)}
|
||||||
errorMessage={errors.menuIcon}
|
errorMessage={errors.menuIcon}
|
||||||
|
|
@ -875,7 +877,7 @@ const WizardStep1 = ({
|
||||||
|
|
||||||
{/* Menu Text (En) */}
|
{/* Menu Text (En) */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Display Name (English)"
|
label={translate('::ListForms.Wizard.Step1.DisplayNameEnglish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextMenuEn && touched.languageTextMenuEn)}
|
invalid={!!(errors.languageTextMenuEn && touched.languageTextMenuEn)}
|
||||||
errorMessage={errors.languageTextMenuEn}
|
errorMessage={errors.languageTextMenuEn}
|
||||||
|
|
@ -884,14 +886,14 @@ const WizardStep1 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextMenuEn"
|
name="languageTextMenuEn"
|
||||||
placeholder="English Menu Text"
|
placeholder={translate('::ListForms.Wizard.Step1.EnglishMenuTextPlaceholder') || 'English Menu Text'}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
{/* Menu Text (Tr) */}
|
{/* Menu Text (Tr) */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Display Name (Turkish)"
|
label={translate('::ListForms.Wizard.Step1.DisplayNameTurkish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextMenuTr && touched.languageTextMenuTr)}
|
invalid={!!(errors.languageTextMenuTr && touched.languageTextMenuTr)}
|
||||||
errorMessage={errors.languageTextMenuTr}
|
errorMessage={errors.languageTextMenuTr}
|
||||||
|
|
@ -900,14 +902,14 @@ const WizardStep1 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextMenuTr"
|
name="languageTextMenuTr"
|
||||||
placeholder="Turkish Menu Text"
|
placeholder={translate('::ListForms.Wizard.Step1.TurkishMenuTextPlaceholder') || 'Turkish Menu Text'}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
{/* Permission Group Name */}
|
{/* Permission Group Name */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Permission Group Name"
|
label={translate('::ListForms.Wizard.Step1.PermissionGroupName')}
|
||||||
invalid={!!(errors.permissionGroupName && touched.permissionGroupName)}
|
invalid={!!(errors.permissionGroupName && touched.permissionGroupName)}
|
||||||
errorMessage={errors.permissionGroupName}
|
errorMessage={errors.permissionGroupName}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
|
|
@ -918,7 +920,7 @@ const WizardStep1 = ({
|
||||||
componentAs={CreatableSelect}
|
componentAs={CreatableSelect}
|
||||||
field={field}
|
field={field}
|
||||||
form={form}
|
form={form}
|
||||||
placeholder="Permission Group Name"
|
placeholder={translate('::ListForms.Wizard.Step1.PermissionGroupName')}
|
||||||
isClearable={true}
|
isClearable={true}
|
||||||
isLoading={isLoadingPermissionGroup}
|
isLoading={isLoadingPermissionGroup}
|
||||||
options={permissionGroupList}
|
options={permissionGroupList}
|
||||||
|
|
@ -946,7 +948,7 @@ const WizardStep1 = ({
|
||||||
<div className="flex-1 flex items-center gap-2">
|
<div className="flex-1 flex items-center gap-2">
|
||||||
{!step1CanGo && (
|
{!step1CanGo && (
|
||||||
<span className="text-xs text-amber-600 dark:text-amber-400 font-medium">
|
<span className="text-xs text-amber-600 dark:text-amber-400 font-medium">
|
||||||
⚠ Zorunlu: {step1Missing.join(', ')}
|
⚠ {translate('::ListForms.Wizard.Required') || 'Zorunlu'}: {step1Missing.join(', ')}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -62,15 +62,15 @@ const WizardStep2 = ({
|
||||||
onNext,
|
onNext,
|
||||||
}: WizardStep2Props) => {
|
}: WizardStep2Props) => {
|
||||||
const step2Missing = [
|
const step2Missing = [
|
||||||
!values.listFormCode && 'ListForm Code',
|
!values.listFormCode && translate('::ListForms.Wizard.Step2.ListFormCode'),
|
||||||
!values.dataSourceCode && 'Veri Kaynağı',
|
!values.dataSourceCode && translate('::ListForms.Wizard.Step4.DataSource'),
|
||||||
!values.selectCommand && 'Select Command',
|
!values.selectCommand && translate('::ListForms.Wizard.Step2.SelectCommand'),
|
||||||
!values.keyFieldName && 'Key Field',
|
!values.keyFieldName && translate('::ListForms.Wizard.Step4.KeyField'),
|
||||||
!values.languageTextDescEn && 'Description Text (En)',
|
!values.languageTextDescEn && translate('::ListForms.Wizard.Step2.DescriptionTextEnglish'),
|
||||||
!values.languageTextDescTr && 'Description Text (Tr)',
|
!values.languageTextDescTr && translate('::ListForms.Wizard.Step2.DescriptionTextTurkish'),
|
||||||
!values.languageTextTitleEn && 'Title Text (En)',
|
!values.languageTextTitleEn && translate('::ListForms.Wizard.Step2.TitleTextEnglish'),
|
||||||
!values.languageTextTitleTr && 'Title Text (Tr)',
|
!values.languageTextTitleTr && translate('::ListForms.Wizard.Step2.TitleTextTurkish'),
|
||||||
selectedColumns.size === 0 && 'Sütun seçimi',
|
selectedColumns.size === 0 && (translate('::ListForms.Wizard.Step2.ColumnSelection') || 'Sütun seçimi'),
|
||||||
].filter(Boolean) as string[]
|
].filter(Boolean) as string[]
|
||||||
const step2CanGo = step2Missing.length === 0
|
const step2CanGo = step2Missing.length === 0
|
||||||
|
|
||||||
|
|
@ -79,13 +79,13 @@ const WizardStep2 = ({
|
||||||
{/* ListForm Code + Data Source */}
|
{/* ListForm Code + Data Source */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-x-6">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-x-6">
|
||||||
<FormItem
|
<FormItem
|
||||||
label="ListForm Code"
|
label={translate('::ListForms.Wizard.Step2.ListFormCode')}
|
||||||
invalid={!!(errors.listFormCode && touched.listFormCode)}
|
invalid={!!(errors.listFormCode && touched.listFormCode)}
|
||||||
errorMessage={errors.listFormCode}
|
errorMessage={errors.listFormCode}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
extra={
|
extra={
|
||||||
<span className="text-xs ml-2 text-gray-400">
|
<span className="text-xs ml-2 text-gray-400">
|
||||||
Auto-derived from Wizard Name, editable
|
{translate('::ListForms.Wizard.Step2.ListFormCodeHint') || 'Auto-derived from Wizard Name, editable'}
|
||||||
</span>
|
</span>
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|
@ -100,7 +100,7 @@ const WizardStep2 = ({
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Data Source Code"
|
label={translate('::ListForms.Wizard.Step2.DataSourceCode')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.dataSourceCode && touched.dataSourceCode)}
|
invalid={!!(errors.dataSourceCode && touched.dataSourceCode)}
|
||||||
errorMessage={errors.dataSourceCode}
|
errorMessage={errors.dataSourceCode}
|
||||||
|
|
@ -110,7 +110,7 @@ const WizardStep2 = ({
|
||||||
<Select
|
<Select
|
||||||
field={field}
|
field={field}
|
||||||
form={form}
|
form={form}
|
||||||
placeholder="Data Source Code"
|
placeholder={translate('::ListForms.Wizard.Step2.DataSourceCode')}
|
||||||
isClearable={true}
|
isClearable={true}
|
||||||
isLoading={isLoadingDataSource}
|
isLoading={isLoadingDataSource}
|
||||||
options={dataSourceList}
|
options={dataSourceList}
|
||||||
|
|
@ -137,7 +137,7 @@ const WizardStep2 = ({
|
||||||
|
|
||||||
{isDataSourceNew && (
|
{isDataSourceNew && (
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Connection String"
|
label={translate('::ListForms.Wizard.Step2.ConnectionString')}
|
||||||
invalid={!!(errors.dataSourceConnectionString && touched.dataSourceConnectionString)}
|
invalid={!!(errors.dataSourceConnectionString && touched.dataSourceConnectionString)}
|
||||||
errorMessage={errors.dataSourceConnectionString}
|
errorMessage={errors.dataSourceConnectionString}
|
||||||
>
|
>
|
||||||
|
|
@ -145,7 +145,7 @@ const WizardStep2 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="dataSourceConnectionString"
|
name="dataSourceConnectionString"
|
||||||
placeholder="Connection String"
|
placeholder={translate('::ListForms.Wizard.Step2.ConnectionString')}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
@ -155,7 +155,7 @@ const WizardStep2 = ({
|
||||||
{/* Select Command + Key Field Name */}
|
{/* Select Command + Key Field Name */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-x-6">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-x-6">
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Select Command"
|
label={translate('::ListForms.Wizard.Step2.SelectCommand')}
|
||||||
invalid={!!(errors.selectCommand && touched.selectCommand)}
|
invalid={!!(errors.selectCommand && touched.selectCommand)}
|
||||||
errorMessage={errors.selectCommand}
|
errorMessage={errors.selectCommand}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
|
|
@ -174,7 +174,7 @@ const WizardStep2 = ({
|
||||||
const grouped = dbObjects
|
const grouped = dbObjects
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
label: 'Tables',
|
label: translate('::ListForms.Wizard.Step2.Tables') || 'Tables',
|
||||||
options: dbObjects.tables.map((t) => ({
|
options: dbObjects.tables.map((t) => ({
|
||||||
label: t.tableName,
|
label: t.tableName,
|
||||||
value: t.tableName,
|
value: t.tableName,
|
||||||
|
|
@ -184,7 +184,7 @@ const WizardStep2 = ({
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Stored Procedures',
|
label: translate('::ListForms.Wizard.Step2.StoredProcedures') || 'Stored Procedures',
|
||||||
options: dbObjects.storedProcedures.map((p) => ({
|
options: dbObjects.storedProcedures.map((p) => ({
|
||||||
label: p.procedureName,
|
label: p.procedureName,
|
||||||
value: p.procedureName,
|
value: p.procedureName,
|
||||||
|
|
@ -194,7 +194,7 @@ const WizardStep2 = ({
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Views',
|
label: translate('::ListForms.Wizard.Step2.Views') || 'Views',
|
||||||
options: dbObjects.views.map((v) => ({
|
options: dbObjects.views.map((v) => ({
|
||||||
label: v.viewName,
|
label: v.viewName,
|
||||||
value: v.viewName,
|
value: v.viewName,
|
||||||
|
|
@ -204,7 +204,7 @@ const WizardStep2 = ({
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Functions',
|
label: translate('::ListForms.Wizard.Step2.Functions') || 'Functions',
|
||||||
options: dbObjects.functions.map((f) => ({
|
options: dbObjects.functions.map((f) => ({
|
||||||
label: f.functionName,
|
label: f.functionName,
|
||||||
value: f.functionName,
|
value: f.functionName,
|
||||||
|
|
@ -222,7 +222,7 @@ const WizardStep2 = ({
|
||||||
isClearable
|
isClearable
|
||||||
isLoading={isLoadingDbObjects}
|
isLoading={isLoadingDbObjects}
|
||||||
options={grouped}
|
options={grouped}
|
||||||
placeholder={isLoadingDbObjects ? 'Loading…' : 'Tablo/View/SP seç veya SQL yaz…'}
|
placeholder={isLoadingDbObjects ? (translate('::ListForms.Wizard.Step2.Loading') || 'Loading…') : (translate('::ListForms.Wizard.Step2.SelectCommandPlaceholder') || 'Tablo/View/SP seç veya SQL yaz…')}
|
||||||
value={field.value ? { label: field.value, value: field.value } : null}
|
value={field.value ? { label: field.value, value: field.value } : null}
|
||||||
onChange={(option: any) => {
|
onChange={(option: any) => {
|
||||||
if (!option) {
|
if (!option) {
|
||||||
|
|
@ -257,7 +257,7 @@ const WizardStep2 = ({
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Key Field Name"
|
label={translate('::ListForms.Wizard.Step2.KeyFieldName')}
|
||||||
invalid={!!(errors.keyFieldName && touched.keyFieldName)}
|
invalid={!!(errors.keyFieldName && touched.keyFieldName)}
|
||||||
errorMessage={errors.keyFieldName}
|
errorMessage={errors.keyFieldName}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
|
|
@ -269,7 +269,7 @@ const WizardStep2 = ({
|
||||||
</span>
|
</span>
|
||||||
) : selectCommandColumns.length === 0 && !isLoadingColumns ? (
|
) : selectCommandColumns.length === 0 && !isLoadingColumns ? (
|
||||||
<span className="text-xs ml-2 text-gray-400">
|
<span className="text-xs ml-2 text-gray-400">
|
||||||
Select Command seçince sütunlar yüklenir
|
{translate('::ListForms.Wizard.Step2.SelectCommandColumnsHint')}
|
||||||
</span>
|
</span>
|
||||||
) : null
|
) : null
|
||||||
}
|
}
|
||||||
|
|
@ -282,7 +282,7 @@ const WizardStep2 = ({
|
||||||
form={form}
|
form={form}
|
||||||
isClearable
|
isClearable
|
||||||
isLoading={isLoadingColumns}
|
isLoading={isLoadingColumns}
|
||||||
placeholder={isLoadingColumns ? 'Sütunlar yükleniyor…' : '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) => ({
|
options={selectCommandColumns.map((c) => ({
|
||||||
label: `${c.columnName} (${c.dataType})`,
|
label: `${c.columnName} (${c.dataType})`,
|
||||||
value: c.columnName,
|
value: c.columnName,
|
||||||
|
|
@ -311,7 +311,7 @@ const WizardStep2 = ({
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Is Tenant?"
|
label={translate('::ListForms.Wizard.Step2.IsTenant')}
|
||||||
invalid={!!(errors.isTenant && touched.isTenant)}
|
invalid={!!(errors.isTenant && touched.isTenant)}
|
||||||
errorMessage={errors.isTenant}
|
errorMessage={errors.isTenant}
|
||||||
>
|
>
|
||||||
|
|
@ -324,7 +324,7 @@ const WizardStep2 = ({
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Is Branch?"
|
label={translate('::ListForms.Wizard.Step2.IsBranch')}
|
||||||
invalid={!!(errors.isBranch && touched.isBranch)}
|
invalid={!!(errors.isBranch && touched.isBranch)}
|
||||||
errorMessage={errors.isBranch}
|
errorMessage={errors.isBranch}
|
||||||
>
|
>
|
||||||
|
|
@ -339,7 +339,7 @@ const WizardStep2 = ({
|
||||||
|
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-x-6">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-x-6">
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Title Text (English)"
|
label={translate('::ListForms.Wizard.Step2.TitleTextEnglish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextTitleEn && touched.languageTextTitleEn)}
|
invalid={!!(errors.languageTextTitleEn && touched.languageTextTitleEn)}
|
||||||
errorMessage={errors.languageTextTitleEn}
|
errorMessage={errors.languageTextTitleEn}
|
||||||
|
|
@ -348,13 +348,13 @@ const WizardStep2 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextTitleEn"
|
name="languageTextTitleEn"
|
||||||
placeholder="English Title Text"
|
placeholder={translate('::ListForms.Wizard.Step2.EnglishTitlePlaceholder') || 'English Title Text'}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Title Text (Turkish)"
|
label={translate('::ListForms.Wizard.Step2.TitleTextTurkish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextTitleTr && touched.languageTextTitleTr)}
|
invalid={!!(errors.languageTextTitleTr && touched.languageTextTitleTr)}
|
||||||
errorMessage={errors.languageTextTitleTr}
|
errorMessage={errors.languageTextTitleTr}
|
||||||
|
|
@ -363,13 +363,13 @@ const WizardStep2 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextTitleTr"
|
name="languageTextTitleTr"
|
||||||
placeholder="Turkish Title Text"
|
placeholder={translate('::ListForms.Wizard.Step2.TurkishTitlePlaceholder') || 'Turkish Title Text'}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Description Text (English)"
|
label={translate('::ListForms.Wizard.Step2.DescriptionTextEnglish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextDescEn && touched.languageTextDescEn)}
|
invalid={!!(errors.languageTextDescEn && touched.languageTextDescEn)}
|
||||||
errorMessage={errors.languageTextDescEn}
|
errorMessage={errors.languageTextDescEn}
|
||||||
|
|
@ -378,13 +378,13 @@ const WizardStep2 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextDescEn"
|
name="languageTextDescEn"
|
||||||
placeholder="English Description Text"
|
placeholder={translate('::ListForms.Wizard.Step2.EnglishDescPlaceholder') || 'English Description Text'}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Description Text (Turkish)"
|
label={translate('::ListForms.Wizard.Step2.DescriptionTextTurkish')}
|
||||||
asterisk={true}
|
asterisk={true}
|
||||||
invalid={!!(errors.languageTextDescTr && touched.languageTextDescTr)}
|
invalid={!!(errors.languageTextDescTr && touched.languageTextDescTr)}
|
||||||
errorMessage={errors.languageTextDescTr}
|
errorMessage={errors.languageTextDescTr}
|
||||||
|
|
@ -393,7 +393,7 @@ const WizardStep2 = ({
|
||||||
type="text"
|
type="text"
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
name="languageTextDescTr"
|
name="languageTextDescTr"
|
||||||
placeholder="Turkish Description Text"
|
placeholder={translate('::ListForms.Wizard.Step2.TurkishDescPlaceholder') || 'Turkish Description Text'}
|
||||||
component={Input}
|
component={Input}
|
||||||
/>
|
/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
@ -401,7 +401,7 @@ const WizardStep2 = ({
|
||||||
|
|
||||||
{/* Column Selection Panel */}
|
{/* Column Selection Panel */}
|
||||||
<FormItem
|
<FormItem
|
||||||
label="Sütunlar"
|
label={translate('::ListForms.Wizard.Step2.Columns') || 'Sütunlar'}
|
||||||
extra={
|
extra={
|
||||||
selectCommandColumns.length > 0 ? (
|
selectCommandColumns.length > 0 ? (
|
||||||
<div className="flex items-center gap-2 ml-3">
|
<div className="flex items-center gap-2 ml-3">
|
||||||
|
|
@ -410,17 +410,17 @@ const WizardStep2 = ({
|
||||||
onClick={() => onToggleAllColumns(true)}
|
onClick={() => onToggleAllColumns(true)}
|
||||||
className="text-xs px-2 py-0.5 rounded bg-indigo-500 text-white hover:bg-indigo-600"
|
className="text-xs px-2 py-0.5 rounded bg-indigo-500 text-white hover:bg-indigo-600"
|
||||||
>
|
>
|
||||||
Tümünü Seç
|
{translate('::ListForms.Wizard.Step2.SelectAll') || 'Tümünü Seç'}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={() => onToggleAllColumns(false)}
|
onClick={() => onToggleAllColumns(false)}
|
||||||
className="text-xs px-2 py-0.5 rounded border border-gray-300 dark:border-gray-600 text-gray-500 hover:text-red-500 hover:border-red-400"
|
className="text-xs px-2 py-0.5 rounded border border-gray-300 dark:border-gray-600 text-gray-500 hover:text-red-500 hover:border-red-400"
|
||||||
>
|
>
|
||||||
Tümünü Kaldır
|
{translate('::ListForms.Wizard.Step2.ClearAll') || 'Tümünü Kaldır'}
|
||||||
</button>
|
</button>
|
||||||
<span className="text-xs text-gray-400">
|
<span className="text-xs text-gray-400">
|
||||||
{selectedColumns.size}/{selectCommandColumns.length} sütun
|
{selectedColumns.size}/{selectCommandColumns.length} {translate('::ListForms.Wizard.Step4.StatColumn')}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
) : null
|
) : null
|
||||||
|
|
@ -428,10 +428,10 @@ const WizardStep2 = ({
|
||||||
>
|
>
|
||||||
<div className="rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 overflow-hidden">
|
<div className="rounded-lg border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 overflow-hidden">
|
||||||
{isLoadingColumns ? (
|
{isLoadingColumns ? (
|
||||||
<div className="px-4 py-3 text-sm text-gray-400">Sütunlar yükleniyor…</div>
|
<div className="px-4 py-3 text-sm text-gray-400">{translate('::ListForms.Wizard.Step2.ColumnsLoading') || 'Sütunlar yükleniyor…'}</div>
|
||||||
) : selectCommandColumns.length === 0 ? (
|
) : selectCommandColumns.length === 0 ? (
|
||||||
<div className="px-4 py-3 text-sm text-gray-400">
|
<div className="px-4 py-3 text-sm text-gray-400">
|
||||||
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'}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<div className="h-40 overflow-y-auto py-1">
|
<div className="h-40 overflow-y-auto py-1">
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { Button, Dialog } from '@/components/ui'
|
import { Button, Dialog } from '@/components/ui'
|
||||||
|
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||||
import { columnEditorTypeListOptions } from '@/views/admin/listForm/edit/options'
|
import { columnEditorTypeListOptions } from '@/views/admin/listForm/edit/options'
|
||||||
import type { DatabaseColumnDto } from '@/proxy/sql-query-manager/models'
|
import type { DatabaseColumnDto } from '@/proxy/sql-query-manager/models'
|
||||||
import {
|
import {
|
||||||
|
|
@ -140,6 +141,7 @@ function SortableItem({
|
||||||
onRequiredChange,
|
onRequiredChange,
|
||||||
onRemove,
|
onRemove,
|
||||||
}: SortableItemProps) {
|
}: SortableItemProps) {
|
||||||
|
const { translate } = useLocalization()
|
||||||
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
|
||||||
id: `${ITM_PREFIX}${item.id}`,
|
id: `${ITM_PREFIX}${item.id}`,
|
||||||
})
|
})
|
||||||
|
|
@ -177,7 +179,7 @@ function SortableItem({
|
||||||
type="button"
|
type="button"
|
||||||
onClick={onRemove}
|
onClick={onRemove}
|
||||||
className="opacity-0 group-hover/item:opacity-100 p-0.5 text-gray-300 hover:text-red-500 shrink-0 transition-opacity"
|
className="opacity-0 group-hover/item:opacity-100 p-0.5 text-gray-300 hover:text-red-500 shrink-0 transition-opacity"
|
||||||
title="Remove"
|
title={translate('::ListForms.Wizard.Step3.Remove')}
|
||||||
>
|
>
|
||||||
<FaTimes className="text-[10px]" />
|
<FaTimes className="text-[10px]" />
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -198,7 +200,7 @@ function SortableItem({
|
||||||
|
|
||||||
{/* Editor Options */}
|
{/* Editor Options */}
|
||||||
<div className="flex flex-col gap-0.5">
|
<div className="flex flex-col gap-0.5">
|
||||||
<span className="text-[10px] text-gray-400 font-medium">Editor Options</span>
|
<span className="text-[10px] text-gray-400 font-medium">{translate('::ListForms.Wizard.Step3.EditorOptions')}</span>
|
||||||
<textarea
|
<textarea
|
||||||
value={item.editorOptions}
|
value={item.editorOptions}
|
||||||
onChange={(e) => onEditorOptionsChange(e.target.value)}
|
onChange={(e) => onEditorOptionsChange(e.target.value)}
|
||||||
|
|
@ -210,7 +212,7 @@ function SortableItem({
|
||||||
|
|
||||||
{/* Editor Script */}
|
{/* Editor Script */}
|
||||||
<div className="flex flex-col gap-0.5">
|
<div className="flex flex-col gap-0.5">
|
||||||
<span className="text-[10px] text-gray-400 font-medium">Editor Script</span>
|
<span className="text-[10px] text-gray-400 font-medium">{translate('::ListForms.Wizard.Step3.EditorScript')}</span>
|
||||||
<input
|
<input
|
||||||
value={item.editorScript}
|
value={item.editorScript}
|
||||||
onChange={(e) => onEditorScriptChange(e.target.value)}
|
onChange={(e) => onEditorScriptChange(e.target.value)}
|
||||||
|
|
@ -222,7 +224,7 @@ function SortableItem({
|
||||||
{/* Bottom row: ColSpan + Required */}
|
{/* Bottom row: ColSpan + Required */}
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<div className="flex items-center gap-1">
|
<div className="flex items-center gap-1">
|
||||||
<span className="text-[10px] text-gray-400">Span</span>
|
<span className="text-[10px] text-gray-400">{translate('::ListForms.Wizard.Step3.Span')}</span>
|
||||||
<select
|
<select
|
||||||
value={item.colSpan}
|
value={item.colSpan}
|
||||||
onChange={(e) => onColSpanChange(Number(e.target.value))}
|
onChange={(e) => onColSpanChange(Number(e.target.value))}
|
||||||
|
|
@ -242,7 +244,7 @@ function SortableItem({
|
||||||
onChange={(e) => onRequiredChange(e.target.checked)}
|
onChange={(e) => onRequiredChange(e.target.checked)}
|
||||||
className="w-3 h-3 accent-red-500"
|
className="w-3 h-3 accent-red-500"
|
||||||
/>
|
/>
|
||||||
<span className="text-[10px] text-gray-400">Required</span>
|
<span className="text-[10px] text-gray-400">{translate('::ListForms.Wizard.Step3.Required') || 'Required'}</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -272,6 +274,7 @@ function GroupCard({
|
||||||
onDeleteGroup,
|
onDeleteGroup,
|
||||||
onAddAll,
|
onAddAll,
|
||||||
}: GroupCardProps) {
|
}: GroupCardProps) {
|
||||||
|
const { translate } = useLocalization()
|
||||||
const { setNodeRef } = useDroppable({ id: `${GRP_PREFIX}${group.id}` })
|
const { setNodeRef } = useDroppable({ id: `${GRP_PREFIX}${group.id}` })
|
||||||
const itemIds = group.items.map((i) => `${ITM_PREFIX}${i.id}`)
|
const itemIds = group.items.map((i) => `${ITM_PREFIX}${i.id}`)
|
||||||
|
|
||||||
|
|
@ -295,7 +298,7 @@ function GroupCard({
|
||||||
/>
|
/>
|
||||||
{/* ColCount */}
|
{/* ColCount */}
|
||||||
<div className="flex items-center gap-1 shrink-0">
|
<div className="flex items-center gap-1 shrink-0">
|
||||||
<span className="text-xs text-gray-400">Cols:</span>
|
<span className="text-xs text-gray-400">{translate('::ListForms.Wizard.Step3.Cols') || 'Cols:'}</span>
|
||||||
{[1, 2, 3, 4].map((n) => (
|
{[1, 2, 3, 4].map((n) => (
|
||||||
<button
|
<button
|
||||||
key={n}
|
key={n}
|
||||||
|
|
@ -316,17 +319,17 @@ function GroupCard({
|
||||||
type="button"
|
type="button"
|
||||||
onClick={onAddAll}
|
onClick={onAddAll}
|
||||||
className="flex items-center gap-1 h-6 px-2 text-[11px] font-medium rounded border border-indigo-200 dark:border-indigo-700 bg-indigo-50 dark:bg-indigo-900/20 text-indigo-600 dark:text-indigo-400 hover:bg-indigo-100 dark:hover:bg-indigo-900/40 transition-colors shrink-0"
|
className="flex items-center gap-1 h-6 px-2 text-[11px] font-medium rounded border border-indigo-200 dark:border-indigo-700 bg-indigo-50 dark:bg-indigo-900/20 text-indigo-600 dark:text-indigo-400 hover:bg-indigo-100 dark:hover:bg-indigo-900/40 transition-colors shrink-0"
|
||||||
title="Tüm mevcut sütunları bu gruba ekle"
|
title={translate('::ListForms.Wizard.Step3.AddAllToGroupTitle') || 'Tüm mevcut sütunları bu gruba ekle'}
|
||||||
>
|
>
|
||||||
<FaArrowRight className="text-[9px]" />
|
<FaArrowRight className="text-[9px]" />
|
||||||
Tümünü Ekle
|
{translate('::ListForms.Wizard.Step3.AddAll') || 'Tümünü Ekle'}
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={onDeleteGroup}
|
onClick={onDeleteGroup}
|
||||||
className="p-1.5 text-gray-300 hover:text-red-500 rounded transition-colors"
|
className="p-1.5 text-gray-300 hover:text-red-500 rounded transition-colors"
|
||||||
title="Delete group"
|
title={translate('::ListForms.Wizard.Step3.DeleteGroup') || 'Delete group'}
|
||||||
>
|
>
|
||||||
<FaTrash className="text-xs" />
|
<FaTrash className="text-xs" />
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -344,7 +347,7 @@ function GroupCard({
|
||||||
>
|
>
|
||||||
{group.items.length === 0 && !isOver && (
|
{group.items.length === 0 && !isOver && (
|
||||||
<div className="flex items-center justify-center h-12 text-xs text-gray-300 dark:text-gray-600 select-none">
|
<div className="flex items-center justify-center h-12 text-xs text-gray-300 dark:text-gray-600 select-none">
|
||||||
Sütunları buraya sürükleyin
|
{translate('::ListForms.Wizard.Step3.DragColumnsHere') || 'Sütunları buraya sürükleyin'}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<SortableContext items={itemIds} strategy={rectSortingStrategy}>
|
<SortableContext items={itemIds} strategy={rectSortingStrategy}>
|
||||||
|
|
@ -616,9 +619,9 @@ const WizardStep3 = ({
|
||||||
const hasEmptyGroup = groups.some((g) => g.items.length === 0)
|
const hasEmptyGroup = groups.some((g) => g.items.length === 0)
|
||||||
const canProceed = !hasNoGroups && !hasEmptyGroup
|
const canProceed = !hasNoGroups && !hasEmptyGroup
|
||||||
const validationMsg = hasNoGroups
|
const validationMsg = hasNoGroups
|
||||||
? 'En az bir grup eklemelisiniz.'
|
? translate('::ListForms.Wizard.Step3.AtLeastOneGroup') || 'En az bir grup eklemelisiniz.'
|
||||||
: hasEmptyGroup
|
: hasEmptyGroup
|
||||||
? 'Her gruba en az bir sütun eklemelisiniz.'
|
? translate('::ListForms.Wizard.Step3.AtLeastOneColumn') || 'Her gruba en az bir sütun eklemelisiniz.'
|
||||||
: ''
|
: ''
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -635,7 +638,7 @@ const WizardStep3 = ({
|
||||||
<div className="sticky top-4">
|
<div className="sticky top-4">
|
||||||
<div className="flex items-center justify-between mb-2">
|
<div className="flex items-center justify-between mb-2">
|
||||||
<span className="text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide">
|
<span className="text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide">
|
||||||
Sütunlar
|
{translate('::ListForms.Wizard.Step4.StatColumn')}
|
||||||
</span>
|
</span>
|
||||||
<span className="text-xs text-gray-400">
|
<span className="text-xs text-gray-400">
|
||||||
{availableColumns.length}/{selectedColumns.size}
|
{availableColumns.length}/{selectedColumns.size}
|
||||||
|
|
@ -644,7 +647,7 @@ const WizardStep3 = ({
|
||||||
<div className="flex flex-col gap-1.5 max-h-[calc(100vh-280px)] overflow-y-auto pr-1">
|
<div className="flex flex-col gap-1.5 max-h-[calc(100vh-280px)] overflow-y-auto pr-1">
|
||||||
{availableColumns.length === 0 ? (
|
{availableColumns.length === 0 ? (
|
||||||
<div className="text-xs text-gray-300 dark:text-gray-600 py-4 text-center select-none">
|
<div className="text-xs text-gray-300 dark:text-gray-600 py-4 text-center select-none">
|
||||||
Tüm sütunlar gruplara eklendi
|
{translate('::ListForms.Wizard.Step3.AllColumnsAdded') || 'Tüm sütunlar gruplara eklendi'}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
availableColumns.map((col) => <AvailableColumnChip key={col} colName={col} />)
|
availableColumns.map((col) => <AvailableColumnChip key={col} colName={col} />)
|
||||||
|
|
@ -657,7 +660,7 @@ const WizardStep3 = ({
|
||||||
<div className="flex-1 flex flex-col gap-3">
|
<div className="flex-1 flex flex-col gap-3">
|
||||||
{groups.length === 0 && (
|
{groups.length === 0 && (
|
||||||
<div className="rounded-xl border-2 border-dashed border-gray-200 dark:border-gray-700 flex items-center justify-center h-36 text-sm text-gray-300 dark:text-gray-600 select-none">
|
<div className="rounded-xl border-2 border-dashed border-gray-200 dark:border-gray-700 flex items-center justify-center h-36 text-sm text-gray-300 dark:text-gray-600 select-none">
|
||||||
Henüz grup yok — aşağıdan grup ekleyin
|
{translate('::ListForms.Wizard.Step3.NoGroupsYet') || 'Henüz grup yok — aşağıdan grup ekleyin'}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
@ -683,7 +686,7 @@ const WizardStep3 = ({
|
||||||
className="w-full flex items-center justify-center gap-2 py-2.5 rounded-xl border-2 border-dashed border-gray-200 dark:border-gray-700 text-sm text-gray-400 dark:text-gray-500 hover:border-indigo-400 hover:text-indigo-500 dark:hover:border-indigo-600 dark:hover:text-indigo-400 transition-colors"
|
className="w-full flex items-center justify-center gap-2 py-2.5 rounded-xl border-2 border-dashed border-gray-200 dark:border-gray-700 text-sm text-gray-400 dark:text-gray-500 hover:border-indigo-400 hover:text-indigo-500 dark:hover:border-indigo-600 dark:hover:text-indigo-400 transition-colors"
|
||||||
>
|
>
|
||||||
<FaPlus className="text-xs" />
|
<FaPlus className="text-xs" />
|
||||||
Grup Ekle
|
{translate('::ListForms.Wizard.Step3.AddGroup') || 'Grup Ekle'}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -42,30 +42,31 @@ interface LogEntry {
|
||||||
function buildLogSteps(
|
function buildLogSteps(
|
||||||
values: ListFormWizardDto,
|
values: ListFormWizardDto,
|
||||||
groups: WizardGroup[],
|
groups: WizardGroup[],
|
||||||
|
translate: (key: string) => string,
|
||||||
): Omit<LogEntry, 'status'>[] {
|
): Omit<LogEntry, 'status'>[] {
|
||||||
const totalFields = groups.reduce((acc, g) => acc + g.items.length, 0)
|
const totalFields = groups.reduce((acc, g) => acc + g.items.length, 0)
|
||||||
return [
|
return [
|
||||||
{ id: 1, label: 'Konfigürasyon doğrulanıyor…' },
|
{ id: 1, label: translate('::ListForms.Wizard.Step4.Log.ValidatingConfig') },
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
label: `Menü oluşturuluyor: ${values.menuCode}`,
|
label: `${translate('::ListForms.Wizard.Step4.Log.CreatingMenu')}: ${values.menuCode}`,
|
||||||
detail: `Parent: ${values.menuParentCode}`,
|
detail: `Parent: ${values.menuParentCode}`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
label: 'Dil metinleri kaydediliyor',
|
label: translate('::ListForms.Wizard.Step4.Log.SavingLanguageTexts'),
|
||||||
detail: `EN: ${values.languageTextMenuEn} / TR: ${values.languageTextMenuTr}`,
|
detail: `EN: ${values.languageTextMenuEn} / TR: ${values.languageTextMenuTr}`,
|
||||||
},
|
},
|
||||||
{ id: 4, label: `İzin grubu yapılandırılıyor: ${values.permissionGroupName}` },
|
{ id: 4, label: `${translate('::ListForms.Wizard.Step4.Log.ConfiguringPermission')}: ${values.permissionGroupName}` },
|
||||||
{ id: 5, label: `Veri kaynağı bağlanıyor: ${values.dataSourceCode}` },
|
{ id: 5, label: `${translate('::ListForms.Wizard.Step4.Log.ConnectingDataSource')}: ${values.dataSourceCode}` },
|
||||||
{
|
{
|
||||||
id: 6,
|
id: 6,
|
||||||
label: `ListForm oluşturuluyor: ${values.listFormCode}`,
|
label: `${translate('::ListForms.Wizard.Step4.Log.CreatingListForm')}: ${values.listFormCode}`,
|
||||||
detail: `Key: ${values.keyFieldName}`,
|
detail: `Key: ${values.keyFieldName}`,
|
||||||
},
|
},
|
||||||
{ id: 7, label: `Form grupları kaydediliyor (${groups.length} grup, ${totalFields} alan)` },
|
{ id: 7, label: `${translate('::ListForms.Wizard.Step4.Log.SavingFormGroups')} (${groups.length} ${translate('::ListForms.Wizard.Step4.StatGroup')}, ${totalFields} ${translate('::ListForms.Wizard.Step4.StatField')})` },
|
||||||
{ id: 8, label: 'Sunucuya deploy ediliyor…' },
|
{ id: 8, label: translate('::ListForms.Wizard.Step4.Log.Deploying') },
|
||||||
{ id: 9, label: 'Tamamlandı ✓' },
|
{ id: 9, label: translate('::ListForms.Wizard.Step4.Log.Completed') },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,7 +142,7 @@ const WizardStep4 = ({
|
||||||
const [isDone, setIsDone] = useState(false)
|
const [isDone, setIsDone] = useState(false)
|
||||||
const [hasError, setHasError] = useState(false)
|
const [hasError, setHasError] = useState(false)
|
||||||
|
|
||||||
const steps = buildLogSteps(values, groups)
|
const steps = buildLogSteps(values, groups, translate)
|
||||||
|
|
||||||
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))
|
const sleep = (ms: number) => new Promise((r) => setTimeout(r, ms))
|
||||||
|
|
||||||
|
|
@ -201,37 +202,37 @@ const WizardStep4 = ({
|
||||||
{/* ── Left: Summary ──────────────────────────────────────────── */}
|
{/* ── Left: Summary ──────────────────────────────────────────── */}
|
||||||
<div className="flex flex-col gap-3">
|
<div className="flex flex-col gap-3">
|
||||||
<div className="grid grid-cols-2 gap-3 items-start">
|
<div className="grid grid-cols-2 gap-3 items-start">
|
||||||
<Section title="Menü Bilgileri">
|
<Section title={translate('::ListForms.Wizard.Step4.MenuInfo')}>
|
||||||
<Row label="Wizard Adı" value={wizardName} />
|
<Row label={translate('::ListForms.Wizard.Step4.WizardName')} value={wizardName} />
|
||||||
<Row label="Menu Code" value={values.menuCode} />
|
<Row label={translate('::ListForms.Wizard.Step4.MenuCode')} value={values.menuCode} />
|
||||||
<Row label="Menu Parent" value={values.menuParentCode} />
|
<Row label={translate('::ListForms.Wizard.Step4.MenuParent')} value={values.menuParentCode} />
|
||||||
<Row label="İzin Grubu" value={values.permissionGroupName} />
|
<Row label={translate('::ListForms.Wizard.Step4.PermissionGroup')} value={values.permissionGroupName} />
|
||||||
<Row label="İkon" value={values.menuIcon} />
|
<Row label={translate('::ListForms.Wizard.Step4.Icon')} value={values.menuIcon} />
|
||||||
<Row label="Menü (TR)" value={values.languageTextMenuTr} />
|
<Row label={translate('::ListForms.Wizard.Step4.MenuTr')} value={values.languageTextMenuTr} />
|
||||||
<Row label="Menü (EN)" value={values.languageTextMenuEn} />
|
<Row label={translate('::ListForms.Wizard.Step4.MenuEn')} value={values.languageTextMenuEn} />
|
||||||
<Row label="Menü Parent (TR)" value={values.languageTextMenuParentTr} />
|
<Row label={translate('::ListForms.Wizard.Step4.MenuParentTr')} value={values.languageTextMenuParentTr} />
|
||||||
<Row label="Menü Parent (EN)" value={values.languageTextMenuParentEn} />
|
<Row label={translate('::ListForms.Wizard.Step4.MenuParentEn')} value={values.languageTextMenuParentEn} />
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<Section title="ListForm Ayarları">
|
<Section title={translate('::ListForms.Wizard.Step4.ListFormSettings')}>
|
||||||
<Row label="ListForm Code" value={values.listFormCode} />
|
<Row label={translate('::ListForms.Wizard.Step4.ListFormCode')} value={values.listFormCode} />
|
||||||
<Row label="Başlık (TR)" value={values.languageTextTitleTr} />
|
<Row label={translate('::ListForms.Wizard.Step4.TitleTr')} value={values.languageTextTitleTr} />
|
||||||
<Row label="Başlık (EN)" value={values.languageTextTitleEn} />
|
<Row label={translate('::ListForms.Wizard.Step4.TitleEn')} value={values.languageTextTitleEn} />
|
||||||
<Row label="Açıklama (TR)" value={values.languageTextDescTr} />
|
<Row label={translate('::ListForms.Wizard.Step4.DescTr')} value={values.languageTextDescTr} />
|
||||||
<Row label="Açıklama (EN)" value={values.languageTextDescEn} />
|
<Row label={translate('::ListForms.Wizard.Step4.DescEn')} value={values.languageTextDescEn} />
|
||||||
<Row label="Veri Kaynağı" value={values.dataSourceCode} />
|
<Row label={translate('::ListForms.Wizard.Step4.DataSource')} value={values.dataSourceCode} />
|
||||||
<Row label="Connection String" value={values.dataSourceConnectionString} />
|
<Row label={translate('::ListForms.Wizard.Step4.ConnectionString')} value={values.dataSourceConnectionString} />
|
||||||
<Row
|
<Row
|
||||||
label="Komut Tipi"
|
label={translate('::ListForms.Wizard.Step4.CommandType')}
|
||||||
value={
|
value={
|
||||||
selectCommandTypeOptions.find((o) => o.value === values.selectCommandType)?.label ||
|
selectCommandTypeOptions.find((o) => o.value === values.selectCommandType)?.label ||
|
||||||
values.selectCommandType
|
values.selectCommandType
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<Row label="Select Command" value={values.selectCommand} />
|
<Row label={translate('::ListForms.Wizard.Step4.SelectCommand')} value={values.selectCommand} />
|
||||||
<Row label="Key Field" value={values.keyFieldName} />
|
<Row label={translate('::ListForms.Wizard.Step4.KeyField')} value={values.keyFieldName} />
|
||||||
<Row
|
<Row
|
||||||
label="Key Field Tipi"
|
label={translate('::ListForms.Wizard.Step4.KeyFieldType')}
|
||||||
value={
|
value={
|
||||||
dbSourceTypeOptions.find((o: any) => o.value === values.keyFieldDbSourceType)
|
dbSourceTypeOptions.find((o: any) => o.value === values.keyFieldDbSourceType)
|
||||||
?.label ?? String(values.keyFieldDbSourceType)
|
?.label ?? String(values.keyFieldDbSourceType)
|
||||||
|
|
@ -240,7 +241,7 @@ const WizardStep4 = ({
|
||||||
</Section>
|
</Section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Section title="Seçili Sütunlar" badge={selectedColumns.size}>
|
<Section title={translate('::ListForms.Wizard.Step4.SelectedColumns')} badge={selectedColumns.size}>
|
||||||
<div className="flex flex-wrap gap-1.5">
|
<div className="flex flex-wrap gap-1.5">
|
||||||
{[...selectedColumns].map((col) => {
|
{[...selectedColumns].map((col) => {
|
||||||
const meta = selectCommandColumns.find((c) => c.columnName === col)
|
const meta = selectCommandColumns.find((c) => c.columnName === col)
|
||||||
|
|
@ -259,18 +260,18 @@ const WizardStep4 = ({
|
||||||
</div>
|
</div>
|
||||||
</Section>
|
</Section>
|
||||||
|
|
||||||
<Section title="Form Grupları" badge={groups.length}>
|
<Section title={translate('::ListForms.Wizard.Step4.FormGroups')} badge={groups.length}>
|
||||||
<div className="flex flex-col gap-3">
|
<div className="flex flex-col gap-3">
|
||||||
{groups.map((g) => (
|
{groups.map((g) => (
|
||||||
<Section
|
<Section
|
||||||
key={g.id}
|
key={g.id}
|
||||||
title={g.caption || '(Grup)'}
|
title={g.caption || `(${translate('::ListForms.Wizard.Step4.StatGroup')})`}
|
||||||
badge={`${g.items.length} alan · ${g.colCount} sütun`}
|
badge={`${g.items.length} ${translate('::ListForms.Wizard.Step4.StatField')} · ${g.colCount} ${translate('::ListForms.Wizard.Step4.StatColumn')}`}
|
||||||
defaultOpen={false}
|
defaultOpen={false}
|
||||||
>
|
>
|
||||||
<div className="flex flex-col gap-0.5">
|
<div className="flex flex-col gap-0.5">
|
||||||
{g.items.length === 0 ? (
|
{g.items.length === 0 ? (
|
||||||
<span className="text-xs text-gray-300 italic">Alan yok</span>
|
<span className="text-xs text-gray-300 italic">{translate('::ListForms.Wizard.Step4.NoFields') || 'Alan yok'}</span>
|
||||||
) : (
|
) : (
|
||||||
g.items.map((item) => (
|
g.items.map((item) => (
|
||||||
<div
|
<div
|
||||||
|
|
@ -304,9 +305,9 @@ const WizardStep4 = ({
|
||||||
{/* Stats */}
|
{/* Stats */}
|
||||||
<div className="grid grid-cols-3 gap-2">
|
<div className="grid grid-cols-3 gap-2">
|
||||||
{[
|
{[
|
||||||
{ label: 'Grup', value: groups.length },
|
{ label: translate('::ListForms.Wizard.Step4.StatGroup'), value: groups.length },
|
||||||
{ label: 'Alan', value: totalFields },
|
{ label: translate('::ListForms.Wizard.Step4.StatField'), value: totalFields },
|
||||||
{ label: 'Sütun', value: selectedColumns.size },
|
{ label: translate('::ListForms.Wizard.Step4.StatColumn'), value: selectedColumns.size },
|
||||||
].map((s) => (
|
].map((s) => (
|
||||||
<div
|
<div
|
||||||
key={s.label}
|
key={s.label}
|
||||||
|
|
@ -325,16 +326,16 @@ const WizardStep4 = ({
|
||||||
<div className="px-4 py-2.5 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between shrink-0">
|
<div className="px-4 py-2.5 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between shrink-0">
|
||||||
<span className="text-sm font-semibold text-gray-700 dark:text-gray-200 flex items-center gap-2">
|
<span className="text-sm font-semibold text-gray-700 dark:text-gray-200 flex items-center gap-2">
|
||||||
<FaRocket className="text-indigo-400 text-xs" />
|
<FaRocket className="text-indigo-400 text-xs" />
|
||||||
Deploy Log
|
{translate('::ListForms.Wizard.Step4.DeployLog') || 'Deploy Log'}
|
||||||
</span>
|
</span>
|
||||||
{isDone && (
|
{isDone && (
|
||||||
<span className="text-xs text-emerald-500 font-semibold flex items-center gap-1">
|
<span className="text-xs text-emerald-500 font-semibold flex items-center gap-1">
|
||||||
<FaCheckCircle /> Başarılı
|
<FaCheckCircle /> {translate('::ListForms.Wizard.Step4.Success') || 'Başarılı'}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
{hasError && (
|
{hasError && (
|
||||||
<span className="text-xs text-red-500 font-semibold flex items-center gap-1">
|
<span className="text-xs text-red-500 font-semibold flex items-center gap-1">
|
||||||
<FaExclamationCircle /> Hata
|
<FaExclamationCircle /> {translate('::ListForms.Wizard.Step4.Error') || 'Hata'}
|
||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -344,9 +345,9 @@ const WizardStep4 = ({
|
||||||
<div className="flex flex-col items-center justify-center h-full gap-3 py-10 select-none">
|
<div className="flex flex-col items-center justify-center h-full gap-3 py-10 select-none">
|
||||||
<FaRocket className="text-gray-700 text-3xl" />
|
<FaRocket className="text-gray-700 text-3xl" />
|
||||||
<span className="text-xs text-gray-600 italic text-center">
|
<span className="text-xs text-gray-600 italic text-center">
|
||||||
Tüm bilgiler hazır.
|
{translate('::ListForms.Wizard.Step4.AllInfoReady') || 'Tüm bilgiler hazır.'}
|
||||||
<br />
|
<br />
|
||||||
Deploy başlatmak için butona tıklayın.
|
{translate('::ListForms.Wizard.Step4.DeployStartHint')}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
|
|
@ -378,7 +379,7 @@ const WizardStep4 = ({
|
||||||
))}
|
))}
|
||||||
{isDone && (
|
{isDone && (
|
||||||
<div className="mt-4 rounded-lg border border-emerald-800 bg-emerald-950/40 px-4 py-2.5 text-xs text-emerald-400 text-center font-semibold">
|
<div className="mt-4 rounded-lg border border-emerald-800 bg-emerald-950/40 px-4 py-2.5 text-xs text-emerald-400 text-center font-semibold">
|
||||||
🎉 ListForm başarıyla oluşturuldu ve deploy edildi!
|
🎉 {translate('::ListForms.Wizard.Step4.DeploySuccess')}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -410,7 +411,7 @@ const WizardStep4 = ({
|
||||||
disabled={isDeploying || isDone}
|
disabled={isDeploying || isDone}
|
||||||
onClick={runDeploy}
|
onClick={runDeploy}
|
||||||
>
|
>
|
||||||
{isDeploying ? 'Deploy ediliyor…' : isDone ? '✓ Tamamlandı' : 'Deploy & Kaydet'}
|
{isDeploying ? translate('::ListForms.Wizard.Step4.Log.Deploying') : isDone ? `✓ ${translate('::ListForms.Wizard.Step4.Log.Completed')}` : translate('::ListForms.Wizard.Step4.DeployAndSave')}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,7 @@ function RolesPermission({
|
||||||
<Input
|
<Input
|
||||||
size="sm"
|
size="sm"
|
||||||
className="mb-2"
|
className="mb-2"
|
||||||
placeholder="Yetkiler içinde ara..."
|
placeholder={translate('::Search')}
|
||||||
value={searchTerm}
|
value={searchTerm}
|
||||||
onChange={(e) => setSearchTerm(e.target.value)}
|
onChange={(e) => setSearchTerm(e.target.value)}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue