sozsoft-platform/ui/src/proxy/admin/wizard/models.ts

210 lines
5.2 KiB
TypeScript
Raw Normal View History

import {
2026-07-28 18:36:37 +00:00
GanttOptionDto,
SchedulerOptionDto,
SubFormDto,
2026-07-28 18:36:37 +00:00
TodoOptionDto,
TreeOptionDto,
WidgetEditDto,
2026-07-28 18:36:37 +00:00
WorkflowDto,
2026-07-16 14:01:18 +00:00
SelectCommandTypeEnum,
} from '@/proxy/form/models'
import { ListViewLayoutType } from '@/views/admin/listForm/edit/types'
2026-05-03 09:52:22 +00:00
export interface ListFormWizardColumnItemDto {
2026-07-17 20:23:43 +00:00
fieldName: string
2026-05-03 09:52:22 +00:00
editorType: string
editorOptions: string
editorScript: string
colSpan: number
isRequired: boolean
includeInEditingForm: boolean
2026-05-03 09:52:22 +00:00
dbSourceType: number
}
export interface ListFormWizardColumnGroupDto {
caption: string
colCount: number
items: ListFormWizardColumnItemDto[]
}
/** Wizard'ın yol ayrımı; backend `WizardComponentKindEnum` ile birebir eşleşir. */
export enum WizardComponentKindEnum {
List = 0,
Custom = 1,
}
2026-05-03 09:52:22 +00:00
export interface ListFormWizardDto {
componentKind: WizardComponentKindEnum
/**
* Düzenleme modunda, yerine geçilecek seed dosyasının adı. Doluysa sunucu önce bu dosyayı
* ve ürettiği kayıtları siler, sonra yenisini üretir; istek güncelleme yetkisiyle çalışır.
*/
editFileName?: string
2026-05-03 09:52:22 +00:00
wizardName: string
listFormCode: string
menuCode: string
menuOrder: number
2026-08-24 12:00:31 +00:00
/**
* Wizard menüye eklensin mi. False ise menü kaydı hiç üretilmez; ListForm, permission ve
* dil anahtarları yine üretilir (SubGrid gibi başka bir ekranın parçası olarak kullanılır).
*/
createMenu: boolean
customComponentName: string
/** Menünün açtığı adres; Custom yolunda seçilen bileşenin rota yolu. */
menuUrl: string
2026-05-03 09:52:22 +00:00
isTenant: boolean
isBranch: boolean
isOrganizationUnit: boolean
allowAdding: boolean
allowUpdating: boolean
allowDeleting: boolean
confirmDelete: boolean
allowDetail: boolean
defaultLayout: ListViewLayoutType
grid: boolean
2026-07-16 08:19:17 +00:00
card: boolean
2026-05-03 09:52:22 +00:00
pivot: boolean
tree: boolean
chart: boolean
gantt: boolean
scheduler: boolean
2026-07-16 14:01:18 +00:00
todo: boolean
2026-05-03 09:52:22 +00:00
languageTextMenuEn: string
languageTextMenuTr: string
languageTextTitleEn: string
languageTextTitleTr: string
languageTextDescEn: string
languageTextDescTr: string
languageTextMenuParentEn: string
languageTextMenuParentTr: string
permissionGroupName: string
/** Izin grubunun Ingilizce gorunen adi; grup adiyla ayni olan dil anahtarina yazilir. */
permissionGroupDisplayNameEn: string
/** Izin grubunun Turkce gorunen adi. */
permissionGroupDisplayNameTr: string
2026-05-03 09:52:22 +00:00
menuParentCode: string
2026-07-17 20:23:43 +00:00
menuParentShortName?: string
2026-06-06 15:22:14 +00:00
menuParentIcon?: string
2026-05-03 09:52:22 +00:00
menuIcon: string
dataSourceCode: string
dataSourceConnectionString: string
selectCommandType: SelectCommandTypeEnum
selectCommand: string
keyFieldName: string
keyFieldDbSourceType: number
2026-07-28 18:36:37 +00:00
treeOptionDto: TreeOptionDto
ganttOptionDto: GanttOptionDto
schedulerOptionDto: SchedulerOptionDto
todoOptionDto: TodoOptionDto
workflowDto: WorkflowDto
2026-07-16 14:01:18 +00:00
2026-05-03 09:52:22 +00:00
groups?: ListFormWizardColumnGroupDto[]
subForms?: SubFormDto[]
widgets?: WidgetEditDto[]
2026-05-03 09:52:22 +00:00
}
/** Izin grubu secim listesi ogesi; gorunen adlar grup adiyla ayni olan dil anahtarindan gelir. */
export interface WizardPermissionGroupDto {
name: string
displayNameEn: string
displayNameTr: string
}
2026-05-03 09:52:22 +00:00
export interface WizardFileInfoDto {
fileName: string
wizardName: string
listFormCode: string
2026-05-03 12:24:46 +00:00
defaultLayout: string
menuIcon: string
2026-05-03 09:52:22 +00:00
createdAt: string
hasInsertedRecords: boolean
componentKind: WizardComponentKindEnum
customComponentName: string
menuUrl: string
2026-05-03 09:52:22 +00:00
}
export interface WizardInsertedRecordsDto {
languageKeys: string[]
permissionGroupNames: string[]
permissionNames: string[]
menuCodes: string[]
dataSourceCodes: string[]
}
export interface WizardSeedFileItemDto {
2026-07-17 20:23:43 +00:00
fieldName: string
2026-05-03 09:52:22 +00:00
editorType: string
editorOptions: string
editorScript: string
colSpan: number
isRequired: boolean
includeInEditingForm?: boolean
2026-05-03 09:52:22 +00:00
dbSourceType: number
turkishCaption?: string
englishCaption?: string
captionName?: string
lookupDataSourceType?: number
valueExpr?: string
displayExpr?: string
lookupQuery?: string
}
export interface WizardSeedFileGroupDto {
caption: string
colCount: number
items: WizardSeedFileItemDto[]
}
export interface WizardSeedFileWizardDto extends Omit<ListFormWizardDto, 'groups'> {
groups?: WizardSeedFileGroupDto[]
}
export interface WizardSeedFileDto {
wizard: WizardSeedFileWizardDto
isDeletedField: boolean
isCreatedField: boolean
insertedRecords: WizardInsertedRecordsDto
}
/** Import edilen dosyanin hedefteki karsiligiyla karsilastirma sonucu; backend enum'u ile birebir. */
export enum WizardImportEntryStatusEnum {
New = 0,
Identical = 1,
Conflict = 2,
}
export interface WizardImportEntryDto {
/** Kapsam klasorune goreli yol, ornegin `custom/Orders.json`. */
path: string
folder: string
fileName: string
status: WizardImportEntryStatusEnum
incomingSize: number
existingSize: number
/** Yalnizca Conflict durumunda doludur. */
incomingContent?: string
/** Yalnizca Conflict durumunda doludur. */
existingContent?: string
}
export interface WizardImportAnalysisDto {
importId: string
/** Dosyalarin yazilacagi kapsam klasoru (`host` ya da `tenants/{tenantId}`). */
scopeFolder: string
entries: WizardImportEntryDto[]
warnings: string[]
}
export interface WizardImportApplyResultDto {
path: string
overwritten: boolean
size: number
}