From 27e65f05f0636cb7911bc4ec18d9196ff3d3aebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Sat, 6 Jun 2026 22:52:56 +0300 Subject: [PATCH] =?UTF-8?q?Wizard=20k=C4=B1sm=C4=B1nda=20s=C3=BCtunlar?= =?UTF-8?q?=C4=B1n=20Popupformda=20g=C3=B6r=C3=BCn=C3=BCp=20g=C3=B6r=C3=BC?= =?UTF-8?q?nmeyece=C4=9Fini=20belirlenmesi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Wizard/WizardColumnItemInputDto.cs | 1 + .../ListForms/ListFormWizardAppService.cs | 5 +- .../Seeds/LanguagesData.json | 34 +- .../Seeds/ListFormSeeder_Saas.cs | 2 +- .../Seeds/SqlData/Sal_T_Approval.sql | 25 ++ .../WizardData/202606062252_Approval.json | 384 ++++++++++++++++++ .../Seeds/WizardDataSeeder.cs | 5 +- ui/src/proxy/admin/wizard/models.ts | 2 + ui/src/views/admin/listForm/wizard/Wizard.tsx | 2 + .../admin/listForm/wizard/WizardStep3.tsx | 23 +- .../admin/listForm/wizard/WizardStep7.tsx | 210 +++++++--- 11 files changed, 619 insertions(+), 74 deletions(-) create mode 100644 api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/Sal_T_Approval.sql create mode 100644 api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardData/202606062252_Approval.json diff --git a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardColumnItemInputDto.cs b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardColumnItemInputDto.cs index 465d675..d203562 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardColumnItemInputDto.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardColumnItemInputDto.cs @@ -12,6 +12,7 @@ public class WizardColumnItemInputDto public string EditorScript { get; set; } public int ColSpan { get; set; } = 1; public bool IsRequired { get; set; } + public bool IncludeInEditingForm { get; set; } = true; public DbType DbSourceType { get; set; } = DbType.String; public string TurkishCaption { get; set; } public string EnglishCaption { get; set; } diff --git a/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs b/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs index e787a2d..a4b8d15 100644 --- a/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs +++ b/api/src/Sozsoft.Platform.Application/ListForms/ListFormWizardAppService.cs @@ -238,7 +238,7 @@ public class ListFormWizardAppService( ColSpan = g.ColCount, ItemType = "group", Items = g.Items - .Where(i => i.DataField != input.KeyFieldName) + .Where(i => i.IncludeInEditingForm && i.DataField != input.KeyFieldName) .Select((it, ii) => new EditingFormItemDto { Order = ii + 1, @@ -251,6 +251,7 @@ public class ListFormWizardAppService( }) .ToArray() }) + .Where(g => g.Items.Length > 0) .ToList(); //ListForm - varsa sil, yeniden ekle @@ -305,7 +306,7 @@ public class ListFormWizardAppService( HeaderFilterJson = WizardConsts.DefaultHeaderFilterJson, SearchPanelJson = WizardConsts.DefaultSearchPanelJson, GroupPanelJson = JsonSerializer.Serialize(new { Visible = false }), - SelectionJson = WizardConsts.DefaultSelectionSingleJson(input.Widgets.Count > 0 ? GridOptions.SelectionModeSingle : GridOptions.SelectionModeNone), + SelectionJson = WizardConsts.DefaultSelectionSingleJson(input.WorkflowCriteria.Count > 0 ? GridOptions.SelectionModeSingle : GridOptions.SelectionModeNone), ColumnOptionJson = WizardConsts.DefaultColumnOptionJson(), PermissionJson = WizardConsts.DefaultPermissionJson(code), DeleteCommand = isDeleted ? WizardConsts.DefaultDeleteCommand(input.SelectCommand) : null, diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json index 413716c..0a95c32 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/LanguagesData.json @@ -3735,8 +3735,8 @@ { "resourceName": "Platform", "key": "ListForms.ListForm.AddNewRecord", - "en": "Add New Record", - "tr": "Yeni Kayıt Ekle" + "en": "Add", + "tr": "Ekle" }, { "resourceName": "Platform", @@ -17474,6 +17474,12 @@ "en": "Columns load after selecting a Select Command", "tr": "Select Command seçince sütunlar yüklenir" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step3.IncludeInEditingForm", + "en": "Include in Editing Form", + "tr": "Düzenleme Formunda Dahil Et" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step3.GenerateFromTable", @@ -17714,6 +17720,12 @@ "en": "Key Field Type", "tr": "Anahtar Alan Tipi" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.ColumnsAndFormLayout", + "en": "Columns & Form Layout", + "tr": "Sütunlar ve Form Yerleşimi" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step4.SelectedColumns", @@ -17738,6 +17750,24 @@ "en": "Field", "tr": "Alan" }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.EditingForm", + "en": "Popup Form", + "tr": "Popup Form" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.EditingFormColumns", + "en": "Popup Form Columns", + "tr": "Popup Form Sütunları" + }, + { + "resourceName": "Platform", + "key": "ListForms.Wizard.Step4.UngroupedColumns", + "en": "Ungrouped Columns", + "tr": "Gruplanmamış Sütunlar" + }, { "resourceName": "Platform", "key": "ListForms.Wizard.Step4.DeployAndSave", diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs index d937ff2..f48f88a 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/ListFormSeeder_Saas.cs @@ -4025,7 +4025,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency HeaderFilterJson = DefaultHeaderFilterJson, SearchPanelJson = DefaultSearchPanelJson, GroupPanelJson = DefaultGroupPanelJson, - SelectionJson = DefaultSelectionMultipleJson, + SelectionJson = DefaultSelectionSingleJson, ColumnOptionJson = DefaultColumnOptionJson(false), PermissionJson = DefaultPermissionJson(listFormName), PagerOptionJson = DefaultPagerOptionJson, diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/Sal_T_Approval.sql b/api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/Sal_T_Approval.sql new file mode 100644 index 0000000..eff1953 --- /dev/null +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/SqlData/Sal_T_Approval.sql @@ -0,0 +1,25 @@ +IF OBJECT_ID(N'[dbo].[Sal_T_Approval]', 'U') IS NULL +BEGIN + CREATE TABLE [dbo].[Sal_T_Approval] + ( + [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), + [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), + [CreatorId] uniqueidentifier NULL, + [LastModificationTime] datetime2 NULL, + [LastModifierId] uniqueidentifier NULL, + [IsDeleted] bit NOT NULL DEFAULT 0, + [DeletionTime] datetime2 NULL, + [DeleterId] uniqueidentifier NULL, + [TenantId] uniqueidentifier NULL, + [ApprovalUserName] nvarchar(256) NULL, + [ApprovalStatus] nvarchar(50) NULL, + [ApprovalDate] datetime NULL, + [ApprovalDescription] nvarchar(200) NULL, + [Name] nvarchar(100) NULL, + CONSTRAINT [PK_Sal_T_Approval] PRIMARY KEY NONCLUSTERED + ( + [Id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + ) ON [PRIMARY] +END +GO \ No newline at end of file diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardData/202606062252_Approval.json b/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardData/202606062252_Approval.json new file mode 100644 index 0000000..fd907ef --- /dev/null +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardData/202606062252_Approval.json @@ -0,0 +1,384 @@ +{ + "Wizard": { + "WizardName": "Approval", + "ListFormCode": "App.Wizard.Approval", + "MenuCode": "App.Wizard.Approval", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "AllowAdding": true, + "AllowUpdating": true, + "AllowDeleting": true, + "AllowDetail": false, + "ConfirmDelete": true, + "DefaultLayout": "grid", + "Grid": true, + "Pivot": true, + "Tree": true, + "Chart": true, + "Gantt": true, + "Scheduler": true, + "LanguageTextMenuEn": "Approval", + "LanguageTextMenuTr": "Approval", + "LanguageTextTitleEn": "Approval", + "LanguageTextTitleTr": "Approval", + "LanguageTextDescEn": "Approval", + "LanguageTextDescTr": "Approval", + "LanguageTextMenuParentEn": "", + "LanguageTextMenuParentTr": "", + "PermissionGroupName": "App.Wizard.Sales", + "MenuParentCode": "App.Wizard.Sales", + "MenuParentIcon": "FcAssistant", + "MenuIcon": "FcBrokenLink", + "DataSourceCode": "Default", + "DataSourceConnectionString": "", + "SelectCommandType": 1, + "SelectCommand": "Sal_T_Approval", + "KeyFieldName": "Id", + "KeyFieldDbSourceType": 9, + "TreeKeyExpr": "", + "TreeParentIdExpr": "", + "TreeAutoExpandAll": false, + "GanttKeyExpr": "", + "GanttParentIdExpr": "", + "GanttAutoExpandAll": false, + "GanttTitleExpr": "", + "GanttStartExpr": "", + "GanttEndExpr": "", + "GanttProgressExpr": "", + "SchedulerTextExpr": "", + "SchedulerStartDateExpr": "", + "SchedulerEndDateExpr": "", + "Groups": [ + { + "Caption": "", + "ColCount": 1, + "Items": [ + { + "DataField": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "EditorType": "dxTextBox", + "EditorOptions": "", + "EditorScript": "", + "ColSpan": 1, + "IsRequired": true, + "IncludeInEditingForm": true, + "DbSourceType": 9, + "TurkishCaption": "Id", + "EnglishCaption": "Id", + "LookupDataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "LookupQuery": "" + }, + { + "DataField": "Name", + "CaptionName": "App.Listform.ListformField.Name", + "EditorType": "dxTextBox", + "EditorOptions": "", + "EditorScript": "", + "ColSpan": 1, + "IsRequired": false, + "IncludeInEditingForm": true, + "DbSourceType": 16, + "TurkishCaption": "Name", + "EnglishCaption": "Name", + "LookupDataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "LookupQuery": "" + }, + { + "DataField": "ApprovalUserName", + "CaptionName": "App.Listform.ListformField.ApprovalUserName", + "EditorType": "dxTextBox", + "EditorOptions": "", + "EditorScript": "", + "ColSpan": 1, + "IsRequired": false, + "IncludeInEditingForm": false, + "DbSourceType": 16, + "TurkishCaption": "Approval User Name", + "EnglishCaption": "Approval User Name", + "LookupDataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "LookupQuery": "" + }, + { + "DataField": "ApprovalStatus", + "CaptionName": "App.Listform.ListformField.ApprovalStatus", + "EditorType": "dxTextBox", + "EditorOptions": "", + "EditorScript": "", + "ColSpan": 1, + "IsRequired": false, + "IncludeInEditingForm": false, + "DbSourceType": 16, + "TurkishCaption": "Approval Status", + "EnglishCaption": "Approval Status", + "LookupDataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "LookupQuery": "" + }, + { + "DataField": "ApprovalDate", + "CaptionName": "App.Listform.ListformField.ApprovalDate", + "EditorType": "dxDateBox", + "EditorOptions": "", + "EditorScript": "", + "ColSpan": 1, + "IsRequired": false, + "IncludeInEditingForm": false, + "DbSourceType": 6, + "TurkishCaption": "Approval Date", + "EnglishCaption": "Approval Date", + "LookupDataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "LookupQuery": "" + }, + { + "DataField": "ApprovalDescription", + "CaptionName": "App.Listform.ListformField.ApprovalDescription", + "EditorType": "dxTextBox", + "EditorOptions": "", + "EditorScript": "", + "ColSpan": 1, + "IsRequired": false, + "IncludeInEditingForm": false, + "DbSourceType": 16, + "TurkishCaption": "Approval Description", + "EnglishCaption": "Approval Description", + "LookupDataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "LookupQuery": "" + } + ] + } + ], + "SubForms": [], + "Widgets": [], + "Workflow": { + "ApprovalUserFieldName": "ApprovalUserName", + "ApprovalDateFieldName": "ApprovalDate", + "ApprovalStatusFieldName": "ApprovalStatus", + "ApprovalDescriptionFieldName": "ApprovalDescription", + "Criteria": [ + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Start", + "Title": "\u0130\u015F Ak\u0131\u015F\u0131 Ba\u015Flat", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "", + "NextOnStart": "WF1780768059929317", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "", + "NextOnReject": "", + "PositionX": 53, + "PositionY": 42, + "CompareOutcomes": [], + "Id": "WF1780768057089996" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Approval", + "Title": "Onay1", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "admin@sozsoft.com", + "NextOnStart": "", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "WF1780768062793138", + "NextOnReject": "WF1780768065817524", + "PositionX": 356, + "PositionY": 41, + "CompareOutcomes": [], + "Id": "WF1780768059929317" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Approval", + "Title": "Onay2", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "demo@sozsoft.com", + "NextOnStart": "", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "WF1780768065817524", + "NextOnReject": "WF1780768065817524", + "PositionX": 632, + "PositionY": 38, + "CompareOutcomes": [], + "Id": "WF1780768062793138" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Inform", + "Title": "Bilgilendirme", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "system@sozsoft.com", + "NextOnStart": "WF1780768071444394", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "", + "NextOnReject": "", + "PositionX": 472, + "PositionY": 417, + "CompareOutcomes": [], + "Id": "WF1780768065817524" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "End", + "Title": "\u0130\u015F Ak\u0131\u015F\u0131 Bitir", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "", + "NextOnStart": "", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "", + "NextOnReject": "", + "PositionX": 850, + "PositionY": 417, + "CompareOutcomes": [], + "Id": "WF1780768071444394" + } + ] + }, + "WorkflowCriteria": [ + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Start", + "Title": "\u0130\u015F Ak\u0131\u015F\u0131 Ba\u015Flat", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "", + "NextOnStart": "WF1780768059929317", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "", + "NextOnReject": "", + "PositionX": 53, + "PositionY": 42, + "CompareOutcomes": [], + "Id": "WF1780768057089996" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Approval", + "Title": "Onay1", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "admin@sozsoft.com", + "NextOnStart": "", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "WF1780768062793138", + "NextOnReject": "WF1780768065817524", + "PositionX": 356, + "PositionY": 41, + "CompareOutcomes": [], + "Id": "WF1780768059929317" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Approval", + "Title": "Onay2", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "demo@sozsoft.com", + "NextOnStart": "", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "WF1780768065817524", + "NextOnReject": "WF1780768065817524", + "PositionX": 632, + "PositionY": 38, + "CompareOutcomes": [], + "Id": "WF1780768062793138" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "Inform", + "Title": "Bilgilendirme", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "system@sozsoft.com", + "NextOnStart": "WF1780768071444394", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "", + "NextOnReject": "", + "PositionX": 472, + "PositionY": 417, + "CompareOutcomes": [], + "Id": "WF1780768065817524" + }, + { + "ListFormCode": "App.Wizard.Approval", + "Kind": "End", + "Title": "\u0130\u015F Ak\u0131\u015F\u0131 Bitir", + "CompareColumn": "Price", + "CompareOperator": "\u003E", + "CompareValue": 5000, + "Approver": "", + "NextOnStart": "", + "NextOnTrue": "", + "NextOnFalse": "", + "NextOnApprove": "", + "NextOnReject": "", + "PositionX": 850, + "PositionY": 417, + "CompareOutcomes": [], + "Id": "WF1780768071444394" + } + ] + }, + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Wizard.Approval", + "App.Wizard.Approval.Title", + "App.Wizard.Approval.Desc", + "App.Listform.ListformField.ApprovalUserName", + "App.Listform.ListformField.ApprovalStatus", + "App.Listform.ListformField.ApprovalDate", + "App.Listform.ListformField.ApprovalDescription" + ], + "PermissionGroupNames": [ + "App.Wizard.Sales" + ], + "PermissionNames": [ + "App.Wizard.Approval", + "App.Wizard.Approval.Create", + "App.Wizard.Approval.Update", + "App.Wizard.Approval.Delete", + "App.Wizard.Approval.Export", + "App.Wizard.Approval.Import", + "App.Wizard.Approval.Note" + ], + "MenuCodes": [ + "App.Wizard.Approval" + ], + "DataSourceCodes": [] + } +} \ No newline at end of file diff --git a/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardDataSeeder.cs b/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardDataSeeder.cs index 228b72b..9ccbb18 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardDataSeeder.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Seeds/WizardDataSeeder.cs @@ -296,7 +296,7 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency ColSpan = g.ColCount, ItemType = "group", Items = g.Items - .Where(i => i.DataField != input.KeyFieldName) + .Where(i => i.IncludeInEditingForm && i.DataField != input.KeyFieldName) .Select((it, ii) => new EditingFormItemDto { Order = ii + 1, @@ -309,6 +309,7 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency }) .ToArray() }) + .Where(g => g.Items.Length > 0) .ToList(); // ListForm - varsa sil, yeniden ekle @@ -352,7 +353,7 @@ public class WizardDataSeeder : IDataSeedContributor, ITransientDependency HeaderFilterJson = WizardConsts.DefaultHeaderFilterJson, SearchPanelJson = WizardConsts.DefaultSearchPanelJson, GroupPanelJson = JsonSerializer.Serialize(new { Visible = false }), - SelectionJson = WizardConsts.DefaultSelectionSingleJson(input.Widgets.Count > 0 ? GridOptions.SelectionModeSingle : GridOptions.SelectionModeNone), + SelectionJson = WizardConsts.DefaultSelectionSingleJson(input.WorkflowCriteria.Count > 0 ? GridOptions.SelectionModeSingle : GridOptions.SelectionModeNone), ColumnOptionJson = WizardConsts.DefaultColumnOptionJson(), PermissionJson = WizardConsts.DefaultPermissionJson(code), DeleteCommand = isDeleted ? WizardConsts.DefaultDeleteCommand(input.SelectCommand) : null, diff --git a/ui/src/proxy/admin/wizard/models.ts b/ui/src/proxy/admin/wizard/models.ts index 0d7495f..dfff23d 100644 --- a/ui/src/proxy/admin/wizard/models.ts +++ b/ui/src/proxy/admin/wizard/models.ts @@ -14,6 +14,7 @@ export interface ListFormWizardColumnItemDto { editorScript: string colSpan: number isRequired: boolean + includeInEditingForm: boolean dbSourceType: number } @@ -114,6 +115,7 @@ export interface WizardSeedFileItemDto { editorScript: string colSpan: number isRequired: boolean + includeInEditingForm?: boolean dbSourceType: number turkishCaption?: string englishCaption?: string diff --git a/ui/src/views/admin/listForm/wizard/Wizard.tsx b/ui/src/views/admin/listForm/wizard/Wizard.tsx index 41f9ea8..bca3a4b 100644 --- a/ui/src/views/admin/listForm/wizard/Wizard.tsx +++ b/ui/src/views/admin/listForm/wizard/Wizard.tsx @@ -475,6 +475,7 @@ const Wizard = () => { editorScript: it.editorScript ?? '', colSpan: it.colSpan ?? 1, isRequired: it.isRequired ?? false, + includeInEditingForm: it.includeInEditingForm ?? true, turkishCaption: it.turkishCaption ?? it.dataField, englishCaption: it.englishCaption ?? it.dataField, captionName: it.captionName ?? `App.Listform.ListformField.${it.dataField}`, @@ -702,6 +703,7 @@ const Wizard = () => { editorScript: item.editorScript ?? '', colSpan: item.colSpan, isRequired: item.isRequired, + includeInEditingForm: item.includeInEditingForm, dbSourceType: col ? sqlDataTypeToDbType(col.dataType) : 12, turkishCaption: item.turkishCaption, englishCaption: item.englishCaption, diff --git a/ui/src/views/admin/listForm/wizard/WizardStep3.tsx b/ui/src/views/admin/listForm/wizard/WizardStep3.tsx index 2e453d9..00d90ab 100644 --- a/ui/src/views/admin/listForm/wizard/WizardStep3.tsx +++ b/ui/src/views/admin/listForm/wizard/WizardStep3.tsx @@ -40,6 +40,7 @@ export interface WizardGroupItem { editorScript: string colSpan: number isRequired: boolean + includeInEditingForm: boolean turkishCaption?: string englishCaption?: string captionName?: string @@ -114,6 +115,7 @@ function newGroupItem(colName: string, meta?: DatabaseColumnDto): WizardGroupIte editorScript: '', colSpan: 1, isRequired: meta?.isNullable === false, + includeInEditingForm: true, turkishCaption: formatLabel(colName), englishCaption: formatLabel(colName), captionName: `App.Listform.ListformField.${colName}`, @@ -179,6 +181,7 @@ interface SortableItemProps { onLookupQueryChange: (val: string) => void onColSpanChange: (val: number) => void onRequiredChange: (val: boolean) => void + onIncludeInEditingFormChange: (val: boolean) => void onRemove: () => void } @@ -194,6 +197,7 @@ function SortableItem({ onEditorScriptChange, onColSpanChange, onRequiredChange, + onIncludeInEditingFormChange, onCaptionNameChange, onLookupDataSourceTypeChange, onDisplayExprChange, @@ -561,7 +565,7 @@ function SortableItem({ /> - {/* Bottom row: ColSpan + Required */} + {/* Bottom row: ColSpan + Editing Form + Required */}
@@ -579,6 +583,20 @@ function SortableItem({ ))}
+
-
- {[...selectedColumns].map((col) => { - const meta = selectCommandColumns.find((c) => c.columnName === col) - return ( - - {col} - {meta?.dataType && ( - {meta.dataType} - )} - - ) - })} -
-
- -
-
- {groups.map((g) => ( -
+ {[ + { + label: translate('::ListForms.Wizard.Step4.SelectedColumns'), + value: selectedColumns.size, + className: 'text-indigo-600 dark:text-indigo-400', + }, + { + label: translate('::ListForms.Wizard.Step4.EditingForm') || 'Popup Form', + value: editingFormFields.length, + className: 'text-emerald-600 dark:text-emerald-400', + }, + { + label: translate('::ListForms.Wizard.Step4.FormGroups'), + value: groups.length, + className: 'text-gray-700 dark:text-gray-200', + }, + ].map((item) => ( +
-
+
+ {item.value} +
+
{item.label}
+
+ ))} +
+ +
+ {groups.map((g) => ( +
+
+ + {g.caption || `(${translate('::ListForms.Wizard.Step4.StatGroup')})`} + +
+ + {g.items.length} {translate('::ListForms.Wizard.Step4.StatField')} + + + {g.colCount} {translate('::App.Listform.ListformField.Column')} + +
+
+
{g.items.length === 0 ? ( - + {translate('::ListForms.Wizard.Step4.NoFields') || 'Alan yok'} ) : ( - g.items.map((item) => ( -
- - {item.dataField} - - - {item.editorType} - - - col-span-{item.colSpan} - {item.isRequired && ( - * - )} - -
- )) + g.items.map((item) => { + const meta = selectCommandColumns.find((c) => c.columnName === item.dataField) + const isKeyField = item.dataField === values.keyFieldName + const isPopupField = item.includeInEditingForm && !isKeyField + return ( +
+
+ + {item.dataField} + + {meta?.dataType && ( + + {meta.dataType} + + )} +
+
+ + {translate('::ListForms.Wizard.Step4.SelectedColumns') || 'List'} + + {isPopupField && ( + + {translate('::ListForms.Wizard.Step4.EditingForm') || 'Popup Form'} + + )} + {isKeyField && ( + + {translate('::ListForms.Wizard.Step4.KeyField')} + + )} + + {item.editorType} + + + span-{item.colSpan} + {item.isRequired && *} + +
+
+ ) + }) )}
-
+
))} + {ungroupedSelectedColumns.length > 0 && ( +
+
+ {translate('::ListForms.Wizard.Step4.UngroupedColumns') || 'Ungrouped columns'} +
+
+ {ungroupedSelectedColumns.map((col) => { + const meta = selectCommandColumns.find((c) => c.columnName === col) + return ( + + {col} + {meta?.dataType && ( + + {meta.dataType} + + )} + + ) + })} +
+
+ )}
@@ -473,7 +546,8 @@ const WizardStep7 = ({ {criteria.kind === 'Compare' && (
- {criteria.compareColumn} {criteria.compareOperator} {criteria.compareValue} + {criteria.compareColumn} {criteria.compareOperator}{' '} + {criteria.compareValue}
)} {(criteria.kind === 'Approval' || criteria.kind === 'Inform') && @@ -494,10 +568,14 @@ const WizardStep7 = ({ {/* ── Right: Deploy ──────────────────────────────────────────── */}
{/* Stats */} -
+
{[ { label: translate('::ListForms.Wizard.Step4.StatGroup'), value: groups.length }, { label: translate('::ListForms.Wizard.Step4.StatField'), value: totalFields }, + { + label: translate('::ListForms.Wizard.Step4.EditingForm') || 'Popup Form', + value: editingFormFields.length, + }, { label: translate('::App.Listform.ListformField.Column'), value: selectedColumns.size,