sozsoft-platform/ui/src/proxy/admin/wizard/models.ts
2026-09-05 21:20:18 +03:00

242 lines
6.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { ColumnFormatEditDto } from '@/proxy/admin/list-form-field/models'
import {
GanttOptionDto,
GridOptionsEditDto,
SchedulerOptionDto,
SubFormDto,
TodoOptionDto,
TreeOptionDto,
WidgetEditDto,
WorkflowDto,
SelectCommandTypeEnum,
} from '@/proxy/form/models'
import { ListViewLayoutType } from '@/views/admin/listForm/edit/types'
export interface ListFormWizardColumnItemDto {
fieldName: string
editorType: string
editorOptions: string
editorScript: string
colSpan: number
isRequired: boolean
includeInEditingForm: boolean
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,
}
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
wizardName: string
/**
* Wizard'ın ilk deploy edildiği an. Dosya adı tarih taşımadığı için seeder dosyaları bu
* damgaya göre sıralar; sunucu üretir, istemci göndermez.
*/
seededAt?: string
listFormCode: string
menuCode: string
menuOrder: number
/**
* 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
isTenant: boolean
isBranch: boolean
isOrganizationUnit: boolean
allowAdding: boolean
allowUpdating: boolean
allowDeleting: boolean
confirmDelete: boolean
allowDetail: boolean
defaultLayout: ListViewLayoutType
grid: boolean
card: boolean
pivot: boolean
tree: boolean
chart: boolean
gantt: boolean
scheduler: boolean
todo: boolean
menuEn: string
menuTr: string
titleEn: string
titleTr: string
descEn: string
descTr: string
menuParentEn: string
menuParentTr: string
permissionGroupName: string
/** Izin grubunun Ingilizce gorunen adi; grup adiyla ayni olan dil anahtarina yazilir. */
permissionGroupEn: string
/** Izin grubunun Turkce gorunen adi. */
permissionGroupTr: string
menuParentCode: string
menuParentModuleId?: string
menuParentIcon?: string
menuIcon: string
dataSourceCode: string
dataSourceConnectionString: string
selectCommandType: SelectCommandTypeEnum
selectCommand: string
keyFieldName: string
keyFieldDbSourceType: number
treeOptionDto: TreeOptionDto
ganttOptionDto: GanttOptionDto
schedulerOptionDto: SchedulerOptionDto
todoOptionDto: TodoOptionDto
workflowDto: WorkflowDto
groups?: ListFormWizardColumnGroupDto[]
subForms?: SubFormDto[]
widgets?: WidgetEditDto[]
}
/** Izin grubu secim listesi ogesi; gorunen adlar grup adiyla ayni olan dil anahtarindan gelir. */
export interface WizardPermissionGroupDto {
name: string
displayNameEn: string
displayNameTr: string
}
export interface WizardFileInfoDto {
fileName: string
wizardName: string
listFormCode: string
defaultLayout: string
menuIcon: string
createdAt: string
hasInsertedRecords: boolean
componentKind: WizardComponentKindEnum
customComponentName: string
menuUrl: string
}
export interface WizardInsertedRecordsDto {
languageKeys: string[]
permissionGroupNames: string[]
permissionNames: string[]
menuCodes: string[]
dataSourceCodes: string[]
}
export interface WizardSeedFileItemDto {
fieldName: string
editorType: string
editorOptions: string
editorScript: string
colSpan: number
isRequired: boolean
includeInEditingForm?: boolean
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
/** Wizard'ın ürettiği ekranın ListForm sözleşmesi; tasarımcıdaki değişiklikler buraya yazılır. */
listForm?: GridOptionsEditDto
/** Ekranın alanları; ListForm detayındaki alan tanımlarıyla aynı sözleşme. */
fields?: ColumnFormatEditDto[]
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 `crud/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[]
}
/**
* Import kapanisinin sonucu. Yazilan `data/*.json` dosyalari ayni islemde veritabanina da
* uygulanir; her dosyanin sonucu burada raporlanir.
*/
export interface WizardImportCompleteResultDto {
appliedData: WizardImportSeedApplyResultDto[]
}
/** Tek bir veri seed dosyasinin veritabanina uygulanma sonucu. */
export interface WizardImportSeedApplyResultDto {
/** Kapsam klasorune goreli yol. */
path: string
/** Veritabanina eklenen satir sayisi. */
insertedRowCount: number
/** Zaten var oldugu icin dosyadaki degerlerle guncellenen satir sayisi. */
updatedRowCount: number
/** Anahtari olmadigi icin guncellenemeyen, dokunulmayan satir sayisi. */
skippedRowCount: number
/** Dosya uygulanamadiysa nedeni; basarili durumda bostur. */
error?: string
}
export interface WizardImportApplyResultDto {
path: string
overwritten: boolean
size: number
}