Seeds -> Project
This commit is contained in:
parent
78bc20b645
commit
4d7aaef901
23 changed files with 2092 additions and 134 deletions
17
.github/instructions/lowcode.instructions.md
vendored
17
.github/instructions/lowcode.instructions.md
vendored
|
|
@ -697,6 +697,7 @@ Bir kolon `Groups[].Items[]` içine eklendiğinde varsayılanlar şöyle türeti
|
|||
| `EditorType` | SQL tipinden çıkarılır (aşağıdaki tablo) |
|
||||
| `DbSourceType` | SQL tipinden `System.Data.DbType` karşılığına eşlenir (§3) |
|
||||
| `IsRequired` | Kolon `NOT NULL` ise `true` |
|
||||
| Anahtar alan | `KeyFieldName` ilk grubun ilk alanı olarak `IncludeInEditingForm: false` ile eklenir (`DbSourceType` = `KeyFieldDbSourceType`); listede gizli sütun olur, forma girmez |
|
||||
| `TurkishCaption` / `EnglishCaption` | Kolon adı PascalCase'ten kelimelere ayrılır: `OrderNo` → `Order No` |
|
||||
| `CaptionName` | `App.Listform.ListformField.{KolonAdı}` |
|
||||
| `ColSpan` | `1` |
|
||||
|
|
@ -1021,6 +1022,12 @@ varsayılan değeri olur ve **yeni kayıtta o alanı otomatik doldurur**.
|
|||
{
|
||||
"Caption": "Genel", "ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id", "CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik", "EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox", "DbSourceType": 11,
|
||||
"IsRequired": false, "IncludeInEditingForm": false, "ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "OrderNo", "CaptionName": "App.Listform.ListformField.OrderNo",
|
||||
"TurkishCaption": "Sipariş No", "EnglishCaption": "Order No",
|
||||
|
|
@ -1117,8 +1124,11 @@ Bunları seed dosyasında aramaya kalkma, orada yokturlar:
|
|||
|
||||
- `Tree`/`Gantt` için `ParentIdExpr`, `Scheduler` için `TextExpr`, `Todo` için `TitleExpr` **ve**
|
||||
`StatusExpr` boşsa o görünümün JSON'u hiç yazılmaz — bayrağı `true` yapmak yetmez.
|
||||
- Anahtar alanı (`KeyFieldName`) `Groups` içine koyarsan sütun olarak gizlenir ve forma girmez;
|
||||
yine de tanımlaman doğrudur, çünkü tip bilgisi oradan okunur.
|
||||
- Anahtar alanı (`KeyFieldName`) `Groups` içine **her zaman** koyulur — ilk grubun ilk alanı
|
||||
olarak, `IncludeInEditingForm: false` ile. Seeder onu kendiliğinden eklemez; yoksa listede
|
||||
anahtar kolonun `ListFormField` kaydı hiç oluşmaz ve satır anahtarı okunamadığı için düzenleme,
|
||||
silme, detay ve alt form ilişkileri çalışmaz. Yazdığında sütun otomatik gizlenir (`Visible =
|
||||
false`) ve forma girmez; tip bilgisi de oradan okunur.
|
||||
- `IsDeletedField: false` verirsen ekranda **kalıcı silme** olmaz (`DeleteCommand` null kalır);
|
||||
soft delete kolonları olmayan tabloda silme istiyorsan ListForm editöründen komut yazmalısın.
|
||||
- Dil anahtarı zaten varsa metni **ezilmez**. Yanlış metin görüyorsan anahtar başka bir yerde
|
||||
|
|
@ -2654,7 +2664,8 @@ içindir.
|
|||
ile tabloya bağlanır. Custom Component kullanacaksa `crud/{Entity}.json` de yaz (§9).
|
||||
4. Wizard dosyasında `SelectCommand` = tablo adı, `KeyFieldName` = `Id`,
|
||||
`KeyFieldDbSourceType` = tablodaki `Id` tipinin sayısı, `IsTenant` = tabloda `TenantId` varsa
|
||||
`true`, `IsDeletedField`/`IsCreatedField` = ilgili kolonlar varsa `true`.
|
||||
`true`, `IsDeletedField`/`IsCreatedField` = ilgili kolonlar varsa `true`. Anahtar alanı
|
||||
`Groups[0].Items[0]` olarak `IncludeInEditingForm: false` ile de yaz (§4.4.1).
|
||||
5. DB Migrate çalıştır; log'da `Executing: CREATE TABLE …` satırını gör.
|
||||
|
||||
---
|
||||
|
|
|
|||
18
configs/seeds/host/postgres/object/Prj_T_Customer.sql
Normal file
18
configs/seeds/host/postgres/object/Prj_T_Customer.sql
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
-- Create Table
|
||||
CREATE TABLE IF NOT EXISTS dbo."Prj_T_Customer" (
|
||||
"Id" UUID NOT NULL CONSTRAINT "PK_Prj_T_Customer" PRIMARY KEY,
|
||||
"TenantId" UUID NULL,
|
||||
"Name" VARCHAR(300) NOT NULL,
|
||||
"ContactName" VARCHAR(200) NULL,
|
||||
"Email" VARCHAR(200) NULL,
|
||||
"Phone" VARCHAR(50) NULL,
|
||||
"CreationTime" TIMESTAMP NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||||
"CreatorId" UUID NULL,
|
||||
"LastModificationTime" TIMESTAMP NULL,
|
||||
"LastModifierId" UUID NULL,
|
||||
"IsDeleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"DeletionTime" TIMESTAMP NULL,
|
||||
"DeleterId" UUID NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Customer_TenantId_Name" ON dbo."Prj_T_Customer" ("TenantId" ASC, "Name" ASC);
|
||||
17
configs/seeds/host/postgres/object/Prj_T_Milestone.sql
Normal file
17
configs/seeds/host/postgres/object/Prj_T_Milestone.sql
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
-- Create Table
|
||||
CREATE TABLE IF NOT EXISTS dbo."Prj_T_Milestone" (
|
||||
"Id" UUID NOT NULL CONSTRAINT "PK_Prj_T_Milestone" PRIMARY KEY,
|
||||
"TenantId" UUID NULL,
|
||||
"Name" VARCHAR(300) NOT NULL,
|
||||
"TargetDate" TIMESTAMP NULL,
|
||||
"IsCompleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"CreationTime" TIMESTAMP NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||||
"CreatorId" UUID NULL,
|
||||
"LastModificationTime" TIMESTAMP NULL,
|
||||
"LastModifierId" UUID NULL,
|
||||
"IsDeleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"DeletionTime" TIMESTAMP NULL,
|
||||
"DeleterId" UUID NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Milestone_TenantId_Name" ON dbo."Prj_T_Milestone" ("TenantId" ASC, "Name" ASC);
|
||||
16
configs/seeds/host/postgres/object/Prj_T_Tag.sql
Normal file
16
configs/seeds/host/postgres/object/Prj_T_Tag.sql
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
-- Create Table
|
||||
CREATE TABLE IF NOT EXISTS dbo."Prj_T_Tag" (
|
||||
"Id" UUID NOT NULL CONSTRAINT "PK_Prj_T_Tag" PRIMARY KEY,
|
||||
"TenantId" UUID NULL,
|
||||
"Name" VARCHAR(200) NOT NULL,
|
||||
"ColorCode" VARCHAR(20) NULL,
|
||||
"CreationTime" TIMESTAMP NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||||
"CreatorId" UUID NULL,
|
||||
"LastModificationTime" TIMESTAMP NULL,
|
||||
"LastModifierId" UUID NULL,
|
||||
"IsDeleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"DeletionTime" TIMESTAMP NULL,
|
||||
"DeleterId" UUID NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Tag_TenantId_Name" ON dbo."Prj_T_Tag" ("TenantId" ASC, "Name" ASC);
|
||||
30
configs/seeds/host/postgres/object/Prj_T_Task.sql
Normal file
30
configs/seeds/host/postgres/object/Prj_T_Task.sql
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
-- Create Table
|
||||
CREATE TABLE IF NOT EXISTS dbo."Prj_T_Task" (
|
||||
"Id" UUID NOT NULL CONSTRAINT "PK_Prj_T_Task" PRIMARY KEY,
|
||||
"TenantId" UUID NULL,
|
||||
"Name" VARCHAR(300) NOT NULL,
|
||||
"MilestoneId" UUID NULL REFERENCES dbo."Prj_T_Milestone" ("Id"),
|
||||
"AssigneeIds" VARCHAR(1000) NULL,
|
||||
"TagIds" VARCHAR(1000) NULL,
|
||||
"CustomerId" UUID NULL REFERENCES dbo."Prj_T_Customer" ("Id"),
|
||||
"CustomerContact" VARCHAR(200) NULL,
|
||||
"SalesOrderLine" VARCHAR(300) NULL,
|
||||
"PlannedHours" NUMERIC(18, 2) NULL,
|
||||
"ProgressPercent" NUMERIC(18, 2) NULL,
|
||||
"Status" VARCHAR(50) NOT NULL DEFAULT 'Taslak',
|
||||
"PlannedStartDate" TIMESTAMP NULL,
|
||||
"PlannedEndDate" TIMESTAMP NULL,
|
||||
"IsFavorite" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"ParentTaskId" UUID NULL REFERENCES dbo."Prj_T_Task" ("Id"),
|
||||
"Description" TEXT NULL,
|
||||
"CreationTime" TIMESTAMP NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||||
"CreatorId" UUID NULL,
|
||||
"LastModificationTime" TIMESTAMP NULL,
|
||||
"LastModifierId" UUID NULL,
|
||||
"IsDeleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"DeletionTime" TIMESTAMP NULL,
|
||||
"DeleterId" UUID NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Task_TenantId_Status" ON dbo."Prj_T_Task" ("TenantId" ASC, "Status" ASC);
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Task_ParentTaskId" ON dbo."Prj_T_Task" ("ParentTaskId" ASC);
|
||||
17
configs/seeds/host/postgres/object/Prj_T_TaskDependency.sql
Normal file
17
configs/seeds/host/postgres/object/Prj_T_TaskDependency.sql
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
-- Create Table
|
||||
CREATE TABLE IF NOT EXISTS dbo."Prj_T_TaskDependency" (
|
||||
"Id" UUID NOT NULL CONSTRAINT "PK_Prj_T_TaskDependency" PRIMARY KEY,
|
||||
"TenantId" UUID NULL,
|
||||
"TaskId" UUID NOT NULL REFERENCES dbo."Prj_T_Task" ("Id"),
|
||||
"DependsOnTaskId" UUID NOT NULL REFERENCES dbo."Prj_T_Task" ("Id"),
|
||||
"Note" VARCHAR(300) NULL,
|
||||
"CreationTime" TIMESTAMP NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||||
"CreatorId" UUID NULL,
|
||||
"LastModificationTime" TIMESTAMP NULL,
|
||||
"LastModifierId" UUID NULL,
|
||||
"IsDeleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"DeletionTime" TIMESTAMP NULL,
|
||||
"DeleterId" UUID NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_TaskDependency_TaskId" ON dbo."Prj_T_TaskDependency" ("TaskId" ASC);
|
||||
19
configs/seeds/host/postgres/object/Prj_T_Timesheet.sql
Normal file
19
configs/seeds/host/postgres/object/Prj_T_Timesheet.sql
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
-- Create Table
|
||||
CREATE TABLE IF NOT EXISTS dbo."Prj_T_Timesheet" (
|
||||
"Id" UUID NOT NULL CONSTRAINT "PK_Prj_T_Timesheet" PRIMARY KEY,
|
||||
"TenantId" UUID NULL,
|
||||
"TaskId" UUID NOT NULL REFERENCES dbo."Prj_T_Task" ("Id"),
|
||||
"WorkDate" TIMESTAMP NOT NULL,
|
||||
"UserId" UUID NULL,
|
||||
"Description" VARCHAR(500) NULL,
|
||||
"Hours" NUMERIC(18, 2) NOT NULL DEFAULT 0,
|
||||
"CreationTime" TIMESTAMP NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
|
||||
"CreatorId" UUID NULL,
|
||||
"LastModificationTime" TIMESTAMP NULL,
|
||||
"LastModifierId" UUID NULL,
|
||||
"IsDeleted" BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
"DeletionTime" TIMESTAMP NULL,
|
||||
"DeleterId" UUID NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS "IX_Prj_T_Timesheet_TaskId_WorkDate" ON dbo."Prj_T_Timesheet" ("TaskId" ASC, "WorkDate" DESC);
|
||||
24
configs/seeds/host/sql/object/Prj_T_Customer.sql
Normal file
24
configs/seeds/host/sql/object/Prj_T_Customer.sql
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
-- Create Table
|
||||
IF OBJECT_ID(N'[dbo].[Prj_T_Customer]', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[Prj_T_Customer] (
|
||||
[Id] UNIQUEIDENTIFIER NOT NULL CONSTRAINT [PK_Prj_T_Customer] PRIMARY KEY,
|
||||
[TenantId] UNIQUEIDENTIFIER NULL,
|
||||
[Name] NVARCHAR(300) NOT NULL,
|
||||
[ContactName] NVARCHAR(200) NULL,
|
||||
[Email] NVARCHAR(200) NULL,
|
||||
[Phone] NVARCHAR(50) NULL,
|
||||
[CreationTime] DATETIME2 NOT NULL CONSTRAINT [DF_Prj_T_Customer_CreationTime] DEFAULT (GETUTCDATE()),
|
||||
[CreatorId] UNIQUEIDENTIFIER NULL,
|
||||
[LastModificationTime] DATETIME2 NULL,
|
||||
[LastModifierId] UNIQUEIDENTIFIER NULL,
|
||||
[IsDeleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_Customer_IsDeleted] DEFAULT (0),
|
||||
[DeletionTime] DATETIME2 NULL,
|
||||
[DeleterId] UNIQUEIDENTIFIER NULL
|
||||
);
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_Customer_TenantId_Name' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_Customer]'))
|
||||
CREATE INDEX [IX_Prj_T_Customer_TenantId_Name] ON [dbo].[Prj_T_Customer] ([TenantId] ASC, [Name] ASC);
|
||||
GO
|
||||
23
configs/seeds/host/sql/object/Prj_T_Milestone.sql
Normal file
23
configs/seeds/host/sql/object/Prj_T_Milestone.sql
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
-- Create Table
|
||||
IF OBJECT_ID(N'[dbo].[Prj_T_Milestone]', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[Prj_T_Milestone] (
|
||||
[Id] UNIQUEIDENTIFIER NOT NULL CONSTRAINT [PK_Prj_T_Milestone] PRIMARY KEY,
|
||||
[TenantId] UNIQUEIDENTIFIER NULL,
|
||||
[Name] NVARCHAR(300) NOT NULL,
|
||||
[TargetDate] DATETIME2 NULL,
|
||||
[IsCompleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_Milestone_IsCompleted] DEFAULT (0),
|
||||
[CreationTime] DATETIME2 NOT NULL CONSTRAINT [DF_Prj_T_Milestone_CreationTime] DEFAULT (GETUTCDATE()),
|
||||
[CreatorId] UNIQUEIDENTIFIER NULL,
|
||||
[LastModificationTime] DATETIME2 NULL,
|
||||
[LastModifierId] UNIQUEIDENTIFIER NULL,
|
||||
[IsDeleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_Milestone_IsDeleted] DEFAULT (0),
|
||||
[DeletionTime] DATETIME2 NULL,
|
||||
[DeleterId] UNIQUEIDENTIFIER NULL
|
||||
);
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_Milestone_TenantId_Name' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_Milestone]'))
|
||||
CREATE INDEX [IX_Prj_T_Milestone_TenantId_Name] ON [dbo].[Prj_T_Milestone] ([TenantId] ASC, [Name] ASC);
|
||||
GO
|
||||
22
configs/seeds/host/sql/object/Prj_T_Tag.sql
Normal file
22
configs/seeds/host/sql/object/Prj_T_Tag.sql
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
-- Create Table
|
||||
IF OBJECT_ID(N'[dbo].[Prj_T_Tag]', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[Prj_T_Tag] (
|
||||
[Id] UNIQUEIDENTIFIER NOT NULL CONSTRAINT [PK_Prj_T_Tag] PRIMARY KEY,
|
||||
[TenantId] UNIQUEIDENTIFIER NULL,
|
||||
[Name] NVARCHAR(200) NOT NULL,
|
||||
[ColorCode] NVARCHAR(20) NULL,
|
||||
[CreationTime] DATETIME2 NOT NULL CONSTRAINT [DF_Prj_T_Tag_CreationTime] DEFAULT (GETUTCDATE()),
|
||||
[CreatorId] UNIQUEIDENTIFIER NULL,
|
||||
[LastModificationTime] DATETIME2 NULL,
|
||||
[LastModifierId] UNIQUEIDENTIFIER NULL,
|
||||
[IsDeleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_Tag_IsDeleted] DEFAULT (0),
|
||||
[DeletionTime] DATETIME2 NULL,
|
||||
[DeleterId] UNIQUEIDENTIFIER NULL
|
||||
);
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_Tag_TenantId_Name' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_Tag]'))
|
||||
CREATE INDEX [IX_Prj_T_Tag_TenantId_Name] ON [dbo].[Prj_T_Tag] ([TenantId] ASC, [Name] ASC);
|
||||
GO
|
||||
54
configs/seeds/host/sql/object/Prj_T_Task.sql
Normal file
54
configs/seeds/host/sql/object/Prj_T_Task.sql
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
-- Create Table
|
||||
IF OBJECT_ID(N'[dbo].[Prj_T_Task]', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[Prj_T_Task] (
|
||||
[Id] UNIQUEIDENTIFIER NOT NULL CONSTRAINT [PK_Prj_T_Task] PRIMARY KEY,
|
||||
[TenantId] UNIQUEIDENTIFIER NULL,
|
||||
[Name] NVARCHAR(300) NOT NULL,
|
||||
[MilestoneId] UNIQUEIDENTIFIER NULL,
|
||||
[AssigneeIds] NVARCHAR(1000) NULL,
|
||||
[TagIds] NVARCHAR(1000) NULL,
|
||||
[CustomerId] UNIQUEIDENTIFIER NULL,
|
||||
[CustomerContact] NVARCHAR(200) NULL,
|
||||
[SalesOrderLine] NVARCHAR(300) NULL,
|
||||
[PlannedHours] DECIMAL(18, 2) NULL,
|
||||
[ProgressPercent] DECIMAL(18, 2) NULL,
|
||||
[Status] NVARCHAR(50) NOT NULL CONSTRAINT [DF_Prj_T_Task_Status] DEFAULT (N'Taslak'),
|
||||
[PlannedStartDate] DATETIME2 NULL,
|
||||
[PlannedEndDate] DATETIME2 NULL,
|
||||
[IsFavorite] BIT NOT NULL CONSTRAINT [DF_Prj_T_Task_IsFavorite] DEFAULT (0),
|
||||
[ParentTaskId] UNIQUEIDENTIFIER NULL,
|
||||
[Description] NVARCHAR(MAX) NULL,
|
||||
[CreationTime] DATETIME2 NOT NULL CONSTRAINT [DF_Prj_T_Task_CreationTime] DEFAULT (GETUTCDATE()),
|
||||
[CreatorId] UNIQUEIDENTIFIER NULL,
|
||||
[LastModificationTime] DATETIME2 NULL,
|
||||
[LastModifierId] UNIQUEIDENTIFIER NULL,
|
||||
[IsDeleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_Task_IsDeleted] DEFAULT (0),
|
||||
[DeletionTime] DATETIME2 NULL,
|
||||
[DeleterId] UNIQUEIDENTIFIER NULL
|
||||
);
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_Prj_T_Task_Milestone')
|
||||
ALTER TABLE [dbo].[Prj_T_Task] ADD CONSTRAINT [FK_Prj_T_Task_Milestone]
|
||||
FOREIGN KEY ([MilestoneId]) REFERENCES [dbo].[Prj_T_Milestone] ([Id]);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_Prj_T_Task_Customer')
|
||||
ALTER TABLE [dbo].[Prj_T_Task] ADD CONSTRAINT [FK_Prj_T_Task_Customer]
|
||||
FOREIGN KEY ([CustomerId]) REFERENCES [dbo].[Prj_T_Customer] ([Id]);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_Prj_T_Task_ParentTask')
|
||||
ALTER TABLE [dbo].[Prj_T_Task] ADD CONSTRAINT [FK_Prj_T_Task_ParentTask]
|
||||
FOREIGN KEY ([ParentTaskId]) REFERENCES [dbo].[Prj_T_Task] ([Id]);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_Task_TenantId_Status' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_Task]'))
|
||||
CREATE INDEX [IX_Prj_T_Task_TenantId_Status] ON [dbo].[Prj_T_Task] ([TenantId] ASC, [Status] ASC);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_Task_ParentTaskId' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_Task]'))
|
||||
CREATE INDEX [IX_Prj_T_Task_ParentTaskId] ON [dbo].[Prj_T_Task] ([ParentTaskId] ASC);
|
||||
GO
|
||||
33
configs/seeds/host/sql/object/Prj_T_TaskDependency.sql
Normal file
33
configs/seeds/host/sql/object/Prj_T_TaskDependency.sql
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
-- Create Table
|
||||
IF OBJECT_ID(N'[dbo].[Prj_T_TaskDependency]', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[Prj_T_TaskDependency] (
|
||||
[Id] UNIQUEIDENTIFIER NOT NULL CONSTRAINT [PK_Prj_T_TaskDependency] PRIMARY KEY,
|
||||
[TenantId] UNIQUEIDENTIFIER NULL,
|
||||
[TaskId] UNIQUEIDENTIFIER NOT NULL,
|
||||
[DependsOnTaskId] UNIQUEIDENTIFIER NOT NULL,
|
||||
[Note] NVARCHAR(300) NULL,
|
||||
[CreationTime] DATETIME2 NOT NULL CONSTRAINT [DF_Prj_T_TaskDependency_CreationTime] DEFAULT (GETUTCDATE()),
|
||||
[CreatorId] UNIQUEIDENTIFIER NULL,
|
||||
[LastModificationTime] DATETIME2 NULL,
|
||||
[LastModifierId] UNIQUEIDENTIFIER NULL,
|
||||
[IsDeleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_TaskDependency_IsDeleted] DEFAULT (0),
|
||||
[DeletionTime] DATETIME2 NULL,
|
||||
[DeleterId] UNIQUEIDENTIFIER NULL
|
||||
);
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_Prj_T_TaskDependency_Task')
|
||||
ALTER TABLE [dbo].[Prj_T_TaskDependency] ADD CONSTRAINT [FK_Prj_T_TaskDependency_Task]
|
||||
FOREIGN KEY ([TaskId]) REFERENCES [dbo].[Prj_T_Task] ([Id]);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_Prj_T_TaskDependency_DependsOnTask')
|
||||
ALTER TABLE [dbo].[Prj_T_TaskDependency] ADD CONSTRAINT [FK_Prj_T_TaskDependency_DependsOnTask]
|
||||
FOREIGN KEY ([DependsOnTaskId]) REFERENCES [dbo].[Prj_T_Task] ([Id]);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_TaskDependency_TaskId' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_TaskDependency]'))
|
||||
CREATE INDEX [IX_Prj_T_TaskDependency_TaskId] ON [dbo].[Prj_T_TaskDependency] ([TaskId] ASC);
|
||||
GO
|
||||
30
configs/seeds/host/sql/object/Prj_T_Timesheet.sql
Normal file
30
configs/seeds/host/sql/object/Prj_T_Timesheet.sql
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
-- Create Table
|
||||
IF OBJECT_ID(N'[dbo].[Prj_T_Timesheet]', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE [dbo].[Prj_T_Timesheet] (
|
||||
[Id] UNIQUEIDENTIFIER NOT NULL CONSTRAINT [PK_Prj_T_Timesheet] PRIMARY KEY,
|
||||
[TenantId] UNIQUEIDENTIFIER NULL,
|
||||
[TaskId] UNIQUEIDENTIFIER NOT NULL,
|
||||
[WorkDate] DATETIME2 NOT NULL,
|
||||
[UserId] UNIQUEIDENTIFIER NULL,
|
||||
[Description] NVARCHAR(500) NULL,
|
||||
[Hours] DECIMAL(18, 2) NOT NULL CONSTRAINT [DF_Prj_T_Timesheet_Hours] DEFAULT (0),
|
||||
[CreationTime] DATETIME2 NOT NULL CONSTRAINT [DF_Prj_T_Timesheet_CreationTime] DEFAULT (GETUTCDATE()),
|
||||
[CreatorId] UNIQUEIDENTIFIER NULL,
|
||||
[LastModificationTime] DATETIME2 NULL,
|
||||
[LastModifierId] UNIQUEIDENTIFIER NULL,
|
||||
[IsDeleted] BIT NOT NULL CONSTRAINT [DF_Prj_T_Timesheet_IsDeleted] DEFAULT (0),
|
||||
[DeletionTime] DATETIME2 NULL,
|
||||
[DeleterId] UNIQUEIDENTIFIER NULL
|
||||
);
|
||||
END
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = N'FK_Prj_T_Timesheet_Task')
|
||||
ALTER TABLE [dbo].[Prj_T_Timesheet] ADD CONSTRAINT [FK_Prj_T_Timesheet_Task]
|
||||
FOREIGN KEY ([TaskId]) REFERENCES [dbo].[Prj_T_Task] ([Id]);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Prj_T_Timesheet_TaskId_WorkDate' AND object_id = OBJECT_ID(N'[dbo].[Prj_T_Timesheet]'))
|
||||
CREATE INDEX [IX_Prj_T_Timesheet_TaskId_WorkDate] ON [dbo].[Prj_T_Timesheet] ([TaskId] ASC, [WorkDate] DESC);
|
||||
GO
|
||||
240
configs/seeds/host/wizard/20260901090000_TaskTimesheets.json
Normal file
240
configs/seeds/host/wizard/20260901090000_TaskTimesheets.json
Normal file
|
|
@ -0,0 +1,240 @@
|
|||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "TaskTimesheets",
|
||||
"ListFormCode": "App.Prj.TaskTimesheets",
|
||||
"MenuCode": "App.Prj.TaskTimesheets",
|
||||
"MenuOrder": 1,
|
||||
"CreateMenu": false,
|
||||
"MenuUrl": "/admin/list/App.Prj.TaskTimesheets",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
"AllowUpdating": true,
|
||||
"AllowDeleting": true,
|
||||
"AllowDetail": false,
|
||||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": false,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Gantt": false,
|
||||
"Scheduler": false,
|
||||
"Todo": false,
|
||||
"LanguageTextMenuEn": "Timesheets",
|
||||
"LanguageTextMenuTr": "Çalışma Çizelgeleri",
|
||||
"LanguageTextTitleEn": "Timesheets",
|
||||
"LanguageTextTitleTr": "Çalışma Çizelgeleri",
|
||||
"LanguageTextDescEn": "Task timesheets",
|
||||
"LanguageTextDescTr": "Görev çalışma çizelgeleri",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcTodoList",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "Prj_T_Timesheet",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": null,
|
||||
"StartExpr": null,
|
||||
"EndExpr": null,
|
||||
"ProgressExpr": null
|
||||
},
|
||||
"GanttOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": "",
|
||||
"ScaleType": "weeks",
|
||||
"StartExpr": "",
|
||||
"EndExpr": "",
|
||||
"ProgressExpr": "",
|
||||
"AllowEditing": false,
|
||||
"AllowTaskAdding": false,
|
||||
"AllowTaskUpdating": false,
|
||||
"AllowTaskResourceUpdating": false,
|
||||
"AllowTaskDeleting": false,
|
||||
"AllowDependencyAdding": false,
|
||||
"AllowDependencyDeleting": false,
|
||||
"AllowResourceAdding": false,
|
||||
"AllowResourceUpdating": false,
|
||||
"AllowResourceDeleting": false
|
||||
},
|
||||
"SchedulerOptionDto": {
|
||||
"TextExpr": "",
|
||||
"UserNameExpr": null,
|
||||
"DescriptionExpr": null,
|
||||
"StartDateExpr": "",
|
||||
"EndDateExpr": "",
|
||||
"AllDayExpr": "",
|
||||
"RecurrenceRuleExpr": "",
|
||||
"RecurrenceExceptionExpr": "",
|
||||
"StartDayHour": 8,
|
||||
"EndDayHour": 20,
|
||||
"DefaultView": "week",
|
||||
"ShowAllDayPanel": true,
|
||||
"CellDuration": 30,
|
||||
"FirstDayOfWeek": 1,
|
||||
"CrossScrollingEnabled": false,
|
||||
"AllowResizing": false,
|
||||
"AllowDragging": false,
|
||||
"AllowDeleting": false,
|
||||
"AllowEditing": false,
|
||||
"AllowAdding": false
|
||||
},
|
||||
"TodoOptionDto": {
|
||||
"TitleExpr": "",
|
||||
"StatusExpr": "",
|
||||
"DescriptionExpr": "",
|
||||
"DueDateExpr": "",
|
||||
"TagExpr": "",
|
||||
"AssigneeExpr": "",
|
||||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
"ApprovalUserFieldName": "",
|
||||
"ApprovalDateFieldName": "",
|
||||
"ApprovalStatusFieldName": "",
|
||||
"ApprovalDescriptionFieldName": "",
|
||||
"ApprovalIsFilterUserName": false,
|
||||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "TaskId",
|
||||
"CaptionName": "App.Listform.ListformField.TaskId",
|
||||
"TurkishCaption": "Görev",
|
||||
"EnglishCaption": "Task",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Task WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "WorkDate",
|
||||
"CaptionName": "App.Listform.ListformField.WorkDate",
|
||||
"TurkishCaption": "Tarih",
|
||||
"EnglishCaption": "Date",
|
||||
"EditorType": "dxDateBox",
|
||||
"DbSourceType": 6,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"type\": \"date\", \"displayFormat\": \"dd.MM.yyyy\", \"useMaskBehavior\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "UserId",
|
||||
"CaptionName": "App.Listform.ListformField.UserId",
|
||||
"TurkishCaption": "Kullanıcı",
|
||||
"EnglishCaption": "User",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], UserName AS [Name] FROM dbo.AbpUsers WHERE IsDeleted = 0 ORDER BY UserName",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "Hours",
|
||||
"CaptionName": "App.Listform.ListformField.Hours",
|
||||
"TurkishCaption": "Süre (saat)",
|
||||
"EnglishCaption": "Hours",
|
||||
"EditorType": "dxNumberBox",
|
||||
"DbSourceType": 7,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"format\": {\"type\": \"fixedPoint\", \"precision\": 2}}"
|
||||
},
|
||||
{
|
||||
"FieldName": "Description",
|
||||
"CaptionName": "App.Listform.ListformField.Description",
|
||||
"TurkishCaption": "Açıklama",
|
||||
"EnglishCaption": "Description",
|
||||
"EditorType": "dxTextArea",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"autoResizeEnabled\": true, \"maxLength\": 500}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Prj.TaskTimesheets",
|
||||
"App.Prj"
|
||||
],
|
||||
"PermissionGroupNames": [
|
||||
"App.Prj"
|
||||
],
|
||||
"PermissionNames": [
|
||||
"App.Prj.TaskTimesheets",
|
||||
"App.Prj.TaskTimesheets.Create",
|
||||
"App.Prj.TaskTimesheets.Update",
|
||||
"App.Prj.TaskTimesheets.Delete",
|
||||
"App.Prj.TaskTimesheets.Export",
|
||||
"App.Prj.TaskTimesheets.Import",
|
||||
"App.Prj.TaskTimesheets.Note"
|
||||
],
|
||||
"MenuCodes": [],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
265
configs/seeds/host/wizard/20260901090100_TaskSubTasks.json
Normal file
265
configs/seeds/host/wizard/20260901090100_TaskSubTasks.json
Normal file
|
|
@ -0,0 +1,265 @@
|
|||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "TaskSubTasks",
|
||||
"ListFormCode": "App.Prj.TaskSubTasks",
|
||||
"MenuCode": "App.Prj.TaskSubTasks",
|
||||
"MenuOrder": 1,
|
||||
"CreateMenu": false,
|
||||
"MenuUrl": "/admin/list/App.Prj.TaskSubTasks",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
"AllowUpdating": true,
|
||||
"AllowDeleting": true,
|
||||
"AllowDetail": false,
|
||||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": false,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Gantt": false,
|
||||
"Scheduler": false,
|
||||
"Todo": false,
|
||||
"LanguageTextMenuEn": "Sub Tasks",
|
||||
"LanguageTextMenuTr": "Alt Görevler",
|
||||
"LanguageTextTitleEn": "Sub Tasks",
|
||||
"LanguageTextTitleTr": "Alt Görevler",
|
||||
"LanguageTextDescEn": "Sub task list",
|
||||
"LanguageTextDescTr": "Alt görev listesi",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcTodoList",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "Prj_T_Task",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": null,
|
||||
"StartExpr": null,
|
||||
"EndExpr": null,
|
||||
"ProgressExpr": null
|
||||
},
|
||||
"GanttOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": "",
|
||||
"ScaleType": "weeks",
|
||||
"StartExpr": "",
|
||||
"EndExpr": "",
|
||||
"ProgressExpr": "",
|
||||
"AllowEditing": false,
|
||||
"AllowTaskAdding": false,
|
||||
"AllowTaskUpdating": false,
|
||||
"AllowTaskResourceUpdating": false,
|
||||
"AllowTaskDeleting": false,
|
||||
"AllowDependencyAdding": false,
|
||||
"AllowDependencyDeleting": false,
|
||||
"AllowResourceAdding": false,
|
||||
"AllowResourceUpdating": false,
|
||||
"AllowResourceDeleting": false
|
||||
},
|
||||
"SchedulerOptionDto": {
|
||||
"TextExpr": "",
|
||||
"UserNameExpr": null,
|
||||
"DescriptionExpr": null,
|
||||
"StartDateExpr": "",
|
||||
"EndDateExpr": "",
|
||||
"AllDayExpr": "",
|
||||
"RecurrenceRuleExpr": "",
|
||||
"RecurrenceExceptionExpr": "",
|
||||
"StartDayHour": 8,
|
||||
"EndDayHour": 20,
|
||||
"DefaultView": "week",
|
||||
"ShowAllDayPanel": true,
|
||||
"CellDuration": 30,
|
||||
"FirstDayOfWeek": 1,
|
||||
"CrossScrollingEnabled": false,
|
||||
"AllowResizing": false,
|
||||
"AllowDragging": false,
|
||||
"AllowDeleting": false,
|
||||
"AllowEditing": false,
|
||||
"AllowAdding": false
|
||||
},
|
||||
"TodoOptionDto": {
|
||||
"TitleExpr": "",
|
||||
"StatusExpr": "",
|
||||
"DescriptionExpr": "",
|
||||
"DueDateExpr": "",
|
||||
"TagExpr": "",
|
||||
"AssigneeExpr": "",
|
||||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
"ApprovalUserFieldName": "",
|
||||
"ApprovalDateFieldName": "",
|
||||
"ApprovalStatusFieldName": "",
|
||||
"ApprovalDescriptionFieldName": "",
|
||||
"ApprovalIsFilterUserName": false,
|
||||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "Name",
|
||||
"CaptionName": "App.Listform.ListformField.Name",
|
||||
"TurkishCaption": "Görev Adı",
|
||||
"EnglishCaption": "Task Name",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"maxLength\": 300, \"showClearButton\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "ParentTaskId",
|
||||
"CaptionName": "App.Listform.ListformField.ParentTaskId",
|
||||
"TurkishCaption": "Üst Görev",
|
||||
"EnglishCaption": "Parent Task",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Task WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "Status",
|
||||
"CaptionName": "App.Listform.ListformField.Status",
|
||||
"TurkishCaption": "Durum",
|
||||
"EnglishCaption": "Status",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 1,
|
||||
"LookupQuery": "[{\"key\": \"Taslak\", \"name\": \"Taslak\"}, {\"key\": \"Devam Ediyor\", \"name\": \"Devam Ediyor\"}, {\"key\": \"Tamamlandı\", \"name\": \"Tamamlandı\"}, {\"key\": \"İptal\", \"name\": \"İptal\"}]",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "AssigneeIds",
|
||||
"CaptionName": "App.Listform.ListformField.AssigneeIds",
|
||||
"TurkishCaption": "Atananlar",
|
||||
"EnglishCaption": "Assignees",
|
||||
"EditorType": "dxTagBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"showSelectionControls\": true, \"maxDisplayedTags\": 3, \"searchEnabled\": true, \"multiline\": true}",
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], UserName AS [Name] FROM dbo.AbpUsers WHERE IsDeleted = 0 ORDER BY UserName",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "ProgressPercent",
|
||||
"CaptionName": "App.Listform.ListformField.ProgressPercent",
|
||||
"TurkishCaption": "İlerleme (%)",
|
||||
"EnglishCaption": "Progress (%)",
|
||||
"EditorType": "dxNumberBox",
|
||||
"DbSourceType": 7,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"format\": {\"type\": \"fixedPoint\", \"precision\": 2}, \"min\": 0, \"max\": 100}"
|
||||
},
|
||||
{
|
||||
"FieldName": "PlannedStartDate",
|
||||
"CaptionName": "App.Listform.ListformField.PlannedStartDate",
|
||||
"TurkishCaption": "Planlanan Başlangıç",
|
||||
"EnglishCaption": "Planned Start",
|
||||
"EditorType": "dxDateBox",
|
||||
"DbSourceType": 6,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"type\": \"datetime\", \"displayFormat\": \"dd.MM.yyyy HH:mm\", \"useMaskBehavior\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "PlannedEndDate",
|
||||
"CaptionName": "App.Listform.ListformField.PlannedEndDate",
|
||||
"TurkishCaption": "Planlanan Bitiş",
|
||||
"EnglishCaption": "Planned End",
|
||||
"EditorType": "dxDateBox",
|
||||
"DbSourceType": 6,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"type\": \"datetime\", \"displayFormat\": \"dd.MM.yyyy HH:mm\", \"useMaskBehavior\": true}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Prj.TaskSubTasks"
|
||||
],
|
||||
"PermissionGroupNames": [],
|
||||
"PermissionNames": [
|
||||
"App.Prj.TaskSubTasks",
|
||||
"App.Prj.TaskSubTasks.Create",
|
||||
"App.Prj.TaskSubTasks.Update",
|
||||
"App.Prj.TaskSubTasks.Delete",
|
||||
"App.Prj.TaskSubTasks.Export",
|
||||
"App.Prj.TaskSubTasks.Import",
|
||||
"App.Prj.TaskSubTasks.Note"
|
||||
],
|
||||
"MenuCodes": [],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
213
configs/seeds/host/wizard/20260901090200_TaskDependencies.json
Normal file
213
configs/seeds/host/wizard/20260901090200_TaskDependencies.json
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "TaskDependencies",
|
||||
"ListFormCode": "App.Prj.TaskDependencies",
|
||||
"MenuCode": "App.Prj.TaskDependencies",
|
||||
"MenuOrder": 1,
|
||||
"CreateMenu": false,
|
||||
"MenuUrl": "/admin/list/App.Prj.TaskDependencies",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
"AllowUpdating": true,
|
||||
"AllowDeleting": true,
|
||||
"AllowDetail": false,
|
||||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": false,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Gantt": false,
|
||||
"Scheduler": false,
|
||||
"Todo": false,
|
||||
"LanguageTextMenuEn": "Blocking Tasks",
|
||||
"LanguageTextMenuTr": "Beklenen Görevler",
|
||||
"LanguageTextTitleEn": "Blocking Tasks",
|
||||
"LanguageTextTitleTr": "Beklenen Görevler",
|
||||
"LanguageTextDescEn": "Tasks this task waits for",
|
||||
"LanguageTextDescTr": "Görevin beklediği görevler",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcTodoList",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "Prj_T_TaskDependency",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": null,
|
||||
"StartExpr": null,
|
||||
"EndExpr": null,
|
||||
"ProgressExpr": null
|
||||
},
|
||||
"GanttOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": "",
|
||||
"ScaleType": "weeks",
|
||||
"StartExpr": "",
|
||||
"EndExpr": "",
|
||||
"ProgressExpr": "",
|
||||
"AllowEditing": false,
|
||||
"AllowTaskAdding": false,
|
||||
"AllowTaskUpdating": false,
|
||||
"AllowTaskResourceUpdating": false,
|
||||
"AllowTaskDeleting": false,
|
||||
"AllowDependencyAdding": false,
|
||||
"AllowDependencyDeleting": false,
|
||||
"AllowResourceAdding": false,
|
||||
"AllowResourceUpdating": false,
|
||||
"AllowResourceDeleting": false
|
||||
},
|
||||
"SchedulerOptionDto": {
|
||||
"TextExpr": "",
|
||||
"UserNameExpr": null,
|
||||
"DescriptionExpr": null,
|
||||
"StartDateExpr": "",
|
||||
"EndDateExpr": "",
|
||||
"AllDayExpr": "",
|
||||
"RecurrenceRuleExpr": "",
|
||||
"RecurrenceExceptionExpr": "",
|
||||
"StartDayHour": 8,
|
||||
"EndDayHour": 20,
|
||||
"DefaultView": "week",
|
||||
"ShowAllDayPanel": true,
|
||||
"CellDuration": 30,
|
||||
"FirstDayOfWeek": 1,
|
||||
"CrossScrollingEnabled": false,
|
||||
"AllowResizing": false,
|
||||
"AllowDragging": false,
|
||||
"AllowDeleting": false,
|
||||
"AllowEditing": false,
|
||||
"AllowAdding": false
|
||||
},
|
||||
"TodoOptionDto": {
|
||||
"TitleExpr": "",
|
||||
"StatusExpr": "",
|
||||
"DescriptionExpr": "",
|
||||
"DueDateExpr": "",
|
||||
"TagExpr": "",
|
||||
"AssigneeExpr": "",
|
||||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
"ApprovalUserFieldName": "",
|
||||
"ApprovalDateFieldName": "",
|
||||
"ApprovalStatusFieldName": "",
|
||||
"ApprovalDescriptionFieldName": "",
|
||||
"ApprovalIsFilterUserName": false,
|
||||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "TaskId",
|
||||
"CaptionName": "App.Listform.ListformField.TaskId",
|
||||
"TurkishCaption": "Görev",
|
||||
"EnglishCaption": "Task",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Task WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "DependsOnTaskId",
|
||||
"CaptionName": "App.Listform.ListformField.DependsOnTaskId",
|
||||
"TurkishCaption": "Beklenen Görev",
|
||||
"EnglishCaption": "Blocking Task",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Task WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "Note",
|
||||
"CaptionName": "App.Listform.ListformField.Note",
|
||||
"TurkishCaption": "Not",
|
||||
"EnglishCaption": "Note",
|
||||
"EditorType": "dxTextArea",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"autoResizeEnabled\": true, \"maxLength\": 300}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Prj.TaskDependencies"
|
||||
],
|
||||
"PermissionGroupNames": [],
|
||||
"PermissionNames": [
|
||||
"App.Prj.TaskDependencies",
|
||||
"App.Prj.TaskDependencies.Create",
|
||||
"App.Prj.TaskDependencies.Update",
|
||||
"App.Prj.TaskDependencies.Delete",
|
||||
"App.Prj.TaskDependencies.Export",
|
||||
"App.Prj.TaskDependencies.Import",
|
||||
"App.Prj.TaskDependencies.Note"
|
||||
],
|
||||
"MenuCodes": [],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
|
|
@ -1,13 +1,14 @@
|
|||
{
|
||||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 1,
|
||||
"WizardName": "RoleList",
|
||||
"ListFormCode": "App.Wizard.RoleList",
|
||||
"MenuCode": "App.Wizard.RoleList",
|
||||
"MenuOrder": 1,
|
||||
"CustomComponentName": "RoleComponent",
|
||||
"MenuUrl": "/admin/roles",
|
||||
"IsTenant": false,
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "Tags",
|
||||
"ListFormCode": "App.Prj.Tags",
|
||||
"MenuCode": "App.Prj.Tags",
|
||||
"MenuOrder": 2,
|
||||
"CreateMenu": true,
|
||||
"MenuUrl": "/admin/list/App.Prj.Tags",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
|
|
@ -17,34 +18,34 @@
|
|||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": true,
|
||||
"Pivot": true,
|
||||
"Card": false,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Chart": true,
|
||||
"Gantt": false,
|
||||
"Scheduler": false,
|
||||
"Todo": false,
|
||||
"LanguageTextMenuEn": "Role List",
|
||||
"LanguageTextMenuTr": "Role List",
|
||||
"LanguageTextTitleEn": "Role List",
|
||||
"LanguageTextTitleTr": "Role List",
|
||||
"LanguageTextDescEn": "Role List",
|
||||
"LanguageTextDescTr": "Role List",
|
||||
"LanguageTextMenuParentEn": "Sample",
|
||||
"LanguageTextMenuParentTr": "Sample",
|
||||
"PermissionGroupName": "App.Wizard.Sample",
|
||||
"PermissionGroupDisplayNameEn": "Sample",
|
||||
"PermissionGroupDisplayNameTr": "Sample",
|
||||
"MenuParentModuleId": "Sam",
|
||||
"MenuParentCode": "App.Wizard.Sample",
|
||||
"MenuParentIcon": "FcBookmark",
|
||||
"MenuIcon": "FcBiohazard",
|
||||
"LanguageTextMenuEn": "Tags",
|
||||
"LanguageTextMenuTr": "Etiketler",
|
||||
"LanguageTextTitleEn": "Tags",
|
||||
"LanguageTextTitleTr": "Etiketler",
|
||||
"LanguageTextDescEn": "Task tags",
|
||||
"LanguageTextDescTr": "Görev etiketleri",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcRules",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "",
|
||||
"KeyFieldName": "",
|
||||
"KeyFieldDbSourceType": 11,
|
||||
"SelectCommand": "Prj_T_Tag",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
|
|
@ -114,7 +115,7 @@
|
|||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "Backlog, Ready to Start, In Progress, Code Review, Testing, Staging",
|
||||
"StatusOrder": "",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
|
|
@ -126,26 +127,71 @@
|
|||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [],
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "Name",
|
||||
"CaptionName": "App.Listform.ListformField.Name",
|
||||
"TurkishCaption": "Etiket Adı",
|
||||
"EnglishCaption": "Tag Name",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"maxLength\": 200, \"showClearButton\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "ColorCode",
|
||||
"CaptionName": "App.Listform.ListformField.ColorCode",
|
||||
"TurkishCaption": "Renk",
|
||||
"EnglishCaption": "Color",
|
||||
"EditorType": "dxColorBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": false,
|
||||
"IsCreatedField": false,
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Wizard.RoleList"
|
||||
"App.Prj.Tags"
|
||||
],
|
||||
"PermissionGroupNames": [],
|
||||
"PermissionNames": [
|
||||
"App.Wizard.RoleList",
|
||||
"App.Wizard.RoleList.Create",
|
||||
"App.Wizard.RoleList.Update",
|
||||
"App.Wizard.RoleList.Delete"
|
||||
"App.Prj.Tags",
|
||||
"App.Prj.Tags.Create",
|
||||
"App.Prj.Tags.Update",
|
||||
"App.Prj.Tags.Delete",
|
||||
"App.Prj.Tags.Export",
|
||||
"App.Prj.Tags.Import",
|
||||
"App.Prj.Tags.Note"
|
||||
],
|
||||
"MenuCodes": [
|
||||
"App.Wizard.RoleList"
|
||||
"App.Prj",
|
||||
"App.Prj.Tags"
|
||||
],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
}
|
||||
208
configs/seeds/host/wizard/20260901090400_Milestones.json
Normal file
208
configs/seeds/host/wizard/20260901090400_Milestones.json
Normal file
|
|
@ -0,0 +1,208 @@
|
|||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "Milestones",
|
||||
"ListFormCode": "App.Prj.Milestones",
|
||||
"MenuCode": "App.Prj.Milestones",
|
||||
"MenuOrder": 3,
|
||||
"CreateMenu": true,
|
||||
"MenuUrl": "/admin/list/App.Prj.Milestones",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
"AllowUpdating": true,
|
||||
"AllowDeleting": true,
|
||||
"AllowDetail": false,
|
||||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": false,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Gantt": false,
|
||||
"Scheduler": false,
|
||||
"Todo": false,
|
||||
"LanguageTextMenuEn": "Milestones",
|
||||
"LanguageTextMenuTr": "Dönüm Noktaları",
|
||||
"LanguageTextTitleEn": "Milestones",
|
||||
"LanguageTextTitleTr": "Dönüm Noktaları",
|
||||
"LanguageTextDescEn": "Project milestones",
|
||||
"LanguageTextDescTr": "Proje dönüm noktaları",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcCalendar",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "Prj_T_Milestone",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": null,
|
||||
"StartExpr": null,
|
||||
"EndExpr": null,
|
||||
"ProgressExpr": null
|
||||
},
|
||||
"GanttOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": "",
|
||||
"ScaleType": "weeks",
|
||||
"StartExpr": "",
|
||||
"EndExpr": "",
|
||||
"ProgressExpr": "",
|
||||
"AllowEditing": false,
|
||||
"AllowTaskAdding": false,
|
||||
"AllowTaskUpdating": false,
|
||||
"AllowTaskResourceUpdating": false,
|
||||
"AllowTaskDeleting": false,
|
||||
"AllowDependencyAdding": false,
|
||||
"AllowDependencyDeleting": false,
|
||||
"AllowResourceAdding": false,
|
||||
"AllowResourceUpdating": false,
|
||||
"AllowResourceDeleting": false
|
||||
},
|
||||
"SchedulerOptionDto": {
|
||||
"TextExpr": "",
|
||||
"UserNameExpr": null,
|
||||
"DescriptionExpr": null,
|
||||
"StartDateExpr": "",
|
||||
"EndDateExpr": "",
|
||||
"AllDayExpr": "",
|
||||
"RecurrenceRuleExpr": "",
|
||||
"RecurrenceExceptionExpr": "",
|
||||
"StartDayHour": 8,
|
||||
"EndDayHour": 20,
|
||||
"DefaultView": "week",
|
||||
"ShowAllDayPanel": true,
|
||||
"CellDuration": 30,
|
||||
"FirstDayOfWeek": 1,
|
||||
"CrossScrollingEnabled": false,
|
||||
"AllowResizing": false,
|
||||
"AllowDragging": false,
|
||||
"AllowDeleting": false,
|
||||
"AllowEditing": false,
|
||||
"AllowAdding": false
|
||||
},
|
||||
"TodoOptionDto": {
|
||||
"TitleExpr": "",
|
||||
"StatusExpr": "",
|
||||
"DescriptionExpr": "",
|
||||
"DueDateExpr": "",
|
||||
"TagExpr": "",
|
||||
"AssigneeExpr": "",
|
||||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
"ApprovalUserFieldName": "",
|
||||
"ApprovalDateFieldName": "",
|
||||
"ApprovalStatusFieldName": "",
|
||||
"ApprovalDescriptionFieldName": "",
|
||||
"ApprovalIsFilterUserName": false,
|
||||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "Name",
|
||||
"CaptionName": "App.Listform.ListformField.Name",
|
||||
"TurkishCaption": "Dönüm Noktası",
|
||||
"EnglishCaption": "Milestone",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"maxLength\": 300, \"showClearButton\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "TargetDate",
|
||||
"CaptionName": "App.Listform.ListformField.TargetDate",
|
||||
"TurkishCaption": "Hedef Tarih",
|
||||
"EnglishCaption": "Target Date",
|
||||
"EditorType": "dxDateBox",
|
||||
"DbSourceType": 6,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"type\": \"date\", \"displayFormat\": \"dd.MM.yyyy\", \"useMaskBehavior\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "IsCompleted",
|
||||
"CaptionName": "App.Listform.ListformField.IsCompleted",
|
||||
"TurkishCaption": "Tamamlandı",
|
||||
"EnglishCaption": "Completed",
|
||||
"EditorType": "dxCheckBox",
|
||||
"DbSourceType": 3,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Prj.Milestones"
|
||||
],
|
||||
"PermissionGroupNames": [],
|
||||
"PermissionNames": [
|
||||
"App.Prj.Milestones",
|
||||
"App.Prj.Milestones.Create",
|
||||
"App.Prj.Milestones.Update",
|
||||
"App.Prj.Milestones.Delete",
|
||||
"App.Prj.Milestones.Export",
|
||||
"App.Prj.Milestones.Import",
|
||||
"App.Prj.Milestones.Note"
|
||||
],
|
||||
"MenuCodes": [
|
||||
"App.Prj.Milestones"
|
||||
],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
221
configs/seeds/host/wizard/20260901090500_Customers.json
Normal file
221
configs/seeds/host/wizard/20260901090500_Customers.json
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "Customers",
|
||||
"ListFormCode": "App.Prj.Customers",
|
||||
"MenuCode": "App.Prj.Customers",
|
||||
"MenuOrder": 4,
|
||||
"CreateMenu": true,
|
||||
"MenuUrl": "/admin/list/App.Prj.Customers",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
"AllowUpdating": true,
|
||||
"AllowDeleting": true,
|
||||
"AllowDetail": false,
|
||||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": false,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Gantt": false,
|
||||
"Scheduler": false,
|
||||
"Todo": false,
|
||||
"LanguageTextMenuEn": "Customers",
|
||||
"LanguageTextMenuTr": "Müşteriler",
|
||||
"LanguageTextTitleEn": "Customers",
|
||||
"LanguageTextTitleTr": "Müşteriler",
|
||||
"LanguageTextDescEn": "Customers linked to tasks",
|
||||
"LanguageTextDescTr": "Görevlerin bağlı olduğu müşteriler",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcBusinessContact",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "Prj_T_Customer",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": null,
|
||||
"StartExpr": null,
|
||||
"EndExpr": null,
|
||||
"ProgressExpr": null
|
||||
},
|
||||
"GanttOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": "",
|
||||
"ScaleType": "weeks",
|
||||
"StartExpr": "",
|
||||
"EndExpr": "",
|
||||
"ProgressExpr": "",
|
||||
"AllowEditing": false,
|
||||
"AllowTaskAdding": false,
|
||||
"AllowTaskUpdating": false,
|
||||
"AllowTaskResourceUpdating": false,
|
||||
"AllowTaskDeleting": false,
|
||||
"AllowDependencyAdding": false,
|
||||
"AllowDependencyDeleting": false,
|
||||
"AllowResourceAdding": false,
|
||||
"AllowResourceUpdating": false,
|
||||
"AllowResourceDeleting": false
|
||||
},
|
||||
"SchedulerOptionDto": {
|
||||
"TextExpr": "",
|
||||
"UserNameExpr": null,
|
||||
"DescriptionExpr": null,
|
||||
"StartDateExpr": "",
|
||||
"EndDateExpr": "",
|
||||
"AllDayExpr": "",
|
||||
"RecurrenceRuleExpr": "",
|
||||
"RecurrenceExceptionExpr": "",
|
||||
"StartDayHour": 8,
|
||||
"EndDayHour": 20,
|
||||
"DefaultView": "week",
|
||||
"ShowAllDayPanel": true,
|
||||
"CellDuration": 30,
|
||||
"FirstDayOfWeek": 1,
|
||||
"CrossScrollingEnabled": false,
|
||||
"AllowResizing": false,
|
||||
"AllowDragging": false,
|
||||
"AllowDeleting": false,
|
||||
"AllowEditing": false,
|
||||
"AllowAdding": false
|
||||
},
|
||||
"TodoOptionDto": {
|
||||
"TitleExpr": "",
|
||||
"StatusExpr": "",
|
||||
"DescriptionExpr": "",
|
||||
"DueDateExpr": "",
|
||||
"TagExpr": "",
|
||||
"AssigneeExpr": "",
|
||||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
"ApprovalUserFieldName": "",
|
||||
"ApprovalDateFieldName": "",
|
||||
"ApprovalStatusFieldName": "",
|
||||
"ApprovalDescriptionFieldName": "",
|
||||
"ApprovalIsFilterUserName": false,
|
||||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "Name",
|
||||
"CaptionName": "App.Listform.ListformField.Name",
|
||||
"TurkishCaption": "Müşteri",
|
||||
"EnglishCaption": "Customer",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"maxLength\": 300, \"showClearButton\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "ContactName",
|
||||
"CaptionName": "App.Listform.ListformField.ContactName",
|
||||
"TurkishCaption": "İlgili Kişi",
|
||||
"EnglishCaption": "Contact",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"maxLength\": 200}"
|
||||
},
|
||||
{
|
||||
"FieldName": "Email",
|
||||
"CaptionName": "App.Listform.ListformField.Email",
|
||||
"TurkishCaption": "E-posta",
|
||||
"EnglishCaption": "Email",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"maxLength\": 200, \"mode\": \"email\"}"
|
||||
},
|
||||
{
|
||||
"FieldName": "Phone",
|
||||
"CaptionName": "App.Listform.ListformField.Phone",
|
||||
"TurkishCaption": "Telefon",
|
||||
"EnglishCaption": "Phone",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"maxLength\": 50}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Prj.Customers"
|
||||
],
|
||||
"PermissionGroupNames": [],
|
||||
"PermissionNames": [
|
||||
"App.Prj.Customers",
|
||||
"App.Prj.Customers.Create",
|
||||
"App.Prj.Customers.Update",
|
||||
"App.Prj.Customers.Delete",
|
||||
"App.Prj.Customers.Export",
|
||||
"App.Prj.Customers.Import",
|
||||
"App.Prj.Customers.Note"
|
||||
],
|
||||
"MenuCodes": [
|
||||
"App.Prj.Customers"
|
||||
],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
421
configs/seeds/host/wizard/20260901090600_Tasks.json
Normal file
421
configs/seeds/host/wizard/20260901090600_Tasks.json
Normal file
|
|
@ -0,0 +1,421 @@
|
|||
{
|
||||
"Wizard": {
|
||||
"ComponentKind": 0,
|
||||
"WizardName": "Tasks",
|
||||
"ListFormCode": "App.Prj.Tasks",
|
||||
"MenuCode": "App.Prj.Tasks",
|
||||
"MenuOrder": 1,
|
||||
"CreateMenu": true,
|
||||
"MenuUrl": "/admin/list/App.Prj.Tasks",
|
||||
"CustomComponentName": "",
|
||||
"IsTenant": true,
|
||||
"IsBranch": false,
|
||||
"IsOrganizationUnit": false,
|
||||
"AllowAdding": true,
|
||||
"AllowUpdating": true,
|
||||
"AllowDeleting": true,
|
||||
"AllowDetail": true,
|
||||
"ConfirmDelete": true,
|
||||
"DefaultLayout": "grid",
|
||||
"Grid": true,
|
||||
"Card": true,
|
||||
"Pivot": false,
|
||||
"Chart": false,
|
||||
"Tree": false,
|
||||
"Gantt": true,
|
||||
"Scheduler": false,
|
||||
"Todo": true,
|
||||
"LanguageTextMenuEn": "Tasks",
|
||||
"LanguageTextMenuTr": "Görevler",
|
||||
"LanguageTextTitleEn": "Tasks",
|
||||
"LanguageTextTitleTr": "Görevler",
|
||||
"LanguageTextDescEn": "Task card and tracking",
|
||||
"LanguageTextDescTr": "Görev kartı ve takibi",
|
||||
"LanguageTextMenuParentEn": "Project",
|
||||
"LanguageTextMenuParentTr": "Proje",
|
||||
"PermissionGroupName": "App.Prj",
|
||||
"PermissionGroupDisplayNameEn": "Project",
|
||||
"PermissionGroupDisplayNameTr": "Proje",
|
||||
"MenuParentCode": "App.Prj",
|
||||
"MenuParentModuleId": "Prj",
|
||||
"MenuParentIcon": "FcTimeline",
|
||||
"MenuIcon": "FcTodoList",
|
||||
"DataSourceCode": "Default",
|
||||
"DataSourceConnectionString": "",
|
||||
"SelectCommandType": 1,
|
||||
"SelectCommand": "Prj_T_Task",
|
||||
"KeyFieldName": "Id",
|
||||
"KeyFieldDbSourceType": 9,
|
||||
"TreeOptionDto": {
|
||||
"KeyExpr": "",
|
||||
"ParentIdExpr": "",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": null,
|
||||
"StartExpr": null,
|
||||
"EndExpr": null,
|
||||
"ProgressExpr": null
|
||||
},
|
||||
"GanttOptionDto": {
|
||||
"KeyExpr": "Id",
|
||||
"ParentIdExpr": "ParentTaskId",
|
||||
"HasItemsExpr": "",
|
||||
"RootValue": "",
|
||||
"ExpandedRowKeys": [],
|
||||
"AutoExpandAll": false,
|
||||
"RecursiveSelection": false,
|
||||
"TitleExpr": "Name",
|
||||
"ScaleType": "weeks",
|
||||
"StartExpr": "PlannedStartDate",
|
||||
"EndExpr": "PlannedEndDate",
|
||||
"ProgressExpr": "ProgressPercent",
|
||||
"AllowEditing": false,
|
||||
"AllowTaskAdding": false,
|
||||
"AllowTaskUpdating": false,
|
||||
"AllowTaskResourceUpdating": false,
|
||||
"AllowTaskDeleting": false,
|
||||
"AllowDependencyAdding": false,
|
||||
"AllowDependencyDeleting": false,
|
||||
"AllowResourceAdding": false,
|
||||
"AllowResourceUpdating": false,
|
||||
"AllowResourceDeleting": false
|
||||
},
|
||||
"SchedulerOptionDto": {
|
||||
"TextExpr": "",
|
||||
"UserNameExpr": null,
|
||||
"DescriptionExpr": null,
|
||||
"StartDateExpr": "",
|
||||
"EndDateExpr": "",
|
||||
"AllDayExpr": "",
|
||||
"RecurrenceRuleExpr": "",
|
||||
"RecurrenceExceptionExpr": "",
|
||||
"StartDayHour": 8,
|
||||
"EndDayHour": 20,
|
||||
"DefaultView": "week",
|
||||
"ShowAllDayPanel": true,
|
||||
"CellDuration": 30,
|
||||
"FirstDayOfWeek": 1,
|
||||
"CrossScrollingEnabled": false,
|
||||
"AllowResizing": false,
|
||||
"AllowDragging": false,
|
||||
"AllowDeleting": false,
|
||||
"AllowEditing": false,
|
||||
"AllowAdding": false
|
||||
},
|
||||
"TodoOptionDto": {
|
||||
"TitleExpr": "Name",
|
||||
"StatusExpr": "Status",
|
||||
"DescriptionExpr": "Description",
|
||||
"DueDateExpr": "PlannedEndDate",
|
||||
"TagExpr": "TagIds",
|
||||
"AssigneeExpr": "AssigneeIds",
|
||||
"PriorityExpr": "",
|
||||
"CompletedExpr": "",
|
||||
"OrderExpr": "",
|
||||
"StatusOrder": "Taslak, Devam Ediyor, Tamamlandı, İptal",
|
||||
"AllowDragging": true
|
||||
},
|
||||
"WorkflowDto": {
|
||||
"ApprovalUserFieldName": "",
|
||||
"ApprovalDateFieldName": "",
|
||||
"ApprovalStatusFieldName": "",
|
||||
"ApprovalDescriptionFieldName": "",
|
||||
"ApprovalIsFilterUserName": false,
|
||||
"ApprovalIsResetWorkflow": false,
|
||||
"Criteria": []
|
||||
},
|
||||
"Groups": [
|
||||
{
|
||||
"Caption": "Genel",
|
||||
"ColCount": 2,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Id",
|
||||
"CaptionName": "App.Listform.ListformField.Id",
|
||||
"TurkishCaption": "Kimlik",
|
||||
"EnglishCaption": "Id",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": false,
|
||||
"ColSpan": 1
|
||||
},
|
||||
{
|
||||
"FieldName": "Name",
|
||||
"CaptionName": "App.Listform.ListformField.Name",
|
||||
"TurkishCaption": "Görev Adı",
|
||||
"EnglishCaption": "Task Name",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"maxLength\": 300, \"showClearButton\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "MilestoneId",
|
||||
"CaptionName": "App.Listform.ListformField.MilestoneId",
|
||||
"TurkishCaption": "Dönüm Noktası",
|
||||
"EnglishCaption": "Milestone",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"searchEnabled\": true, \"showClearButton\": true}",
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Milestone WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "Status",
|
||||
"CaptionName": "App.Listform.ListformField.Status",
|
||||
"TurkishCaption": "Durum",
|
||||
"EnglishCaption": "Status",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": true,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"LookupDataSourceType": 1,
|
||||
"LookupQuery": "[{\"key\": \"Taslak\", \"name\": \"Taslak\"}, {\"key\": \"Devam Ediyor\", \"name\": \"Devam Ediyor\"}, {\"key\": \"Tamamlandı\", \"name\": \"Tamamlandı\"}, {\"key\": \"İptal\", \"name\": \"İptal\"}]",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "AssigneeIds",
|
||||
"CaptionName": "App.Listform.ListformField.AssigneeIds",
|
||||
"TurkishCaption": "Atananlar",
|
||||
"EnglishCaption": "Assignees",
|
||||
"EditorType": "dxTagBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"showSelectionControls\": true, \"maxDisplayedTags\": 3, \"searchEnabled\": true, \"multiline\": true}",
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], UserName AS [Name] FROM dbo.AbpUsers WHERE IsDeleted = 0 ORDER BY UserName",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "TagIds",
|
||||
"CaptionName": "App.Listform.ListformField.TagIds",
|
||||
"TurkishCaption": "Etiketler",
|
||||
"EnglishCaption": "Tags",
|
||||
"EditorType": "dxTagBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"showSelectionControls\": true, \"maxDisplayedTags\": 3, \"searchEnabled\": true, \"multiline\": true}",
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Tag WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "CustomerId",
|
||||
"CaptionName": "App.Listform.ListformField.CustomerId",
|
||||
"TurkishCaption": "Müşteri",
|
||||
"EnglishCaption": "Customer",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"searchEnabled\": true, \"showClearButton\": true}",
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Customer WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "CustomerContact",
|
||||
"CaptionName": "App.Listform.ListformField.CustomerContact",
|
||||
"TurkishCaption": "İlgili Kişi",
|
||||
"EnglishCaption": "Contact",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"maxLength\": 200}"
|
||||
},
|
||||
{
|
||||
"FieldName": "PlannedHours",
|
||||
"CaptionName": "App.Listform.ListformField.PlannedHours",
|
||||
"TurkishCaption": "İlk Planlanan Saatler",
|
||||
"EnglishCaption": "Planned Hours",
|
||||
"EditorType": "dxNumberBox",
|
||||
"DbSourceType": 7,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"format\": {\"type\": \"fixedPoint\", \"precision\": 2}}"
|
||||
},
|
||||
{
|
||||
"FieldName": "ProgressPercent",
|
||||
"CaptionName": "App.Listform.ListformField.ProgressPercent",
|
||||
"TurkishCaption": "İlerleme (%)",
|
||||
"EnglishCaption": "Progress (%)",
|
||||
"EditorType": "dxNumberBox",
|
||||
"DbSourceType": 7,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"format\": {\"type\": \"fixedPoint\", \"precision\": 2}, \"min\": 0, \"max\": 100}"
|
||||
},
|
||||
{
|
||||
"FieldName": "SalesOrderLine",
|
||||
"CaptionName": "App.Listform.ListformField.SalesOrderLine",
|
||||
"TurkishCaption": "Satış Sipariş Satırı",
|
||||
"EnglishCaption": "Sales Order Line",
|
||||
"EditorType": "dxTextBox",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 2,
|
||||
"EditorOptions": "{\"maxLength\": 300}"
|
||||
},
|
||||
{
|
||||
"FieldName": "PlannedStartDate",
|
||||
"CaptionName": "App.Listform.ListformField.PlannedStartDate",
|
||||
"TurkishCaption": "Planlanan Tarih",
|
||||
"EnglishCaption": "Planned Date",
|
||||
"EditorType": "dxDateBox",
|
||||
"DbSourceType": 6,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"type\": \"datetime\", \"displayFormat\": \"dd.MM.yyyy HH:mm\", \"useMaskBehavior\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "PlannedEndDate",
|
||||
"CaptionName": "App.Listform.ListformField.PlannedEndDate",
|
||||
"TurkishCaption": "Planlanan Bitiş",
|
||||
"EnglishCaption": "Planned End",
|
||||
"EditorType": "dxDateBox",
|
||||
"DbSourceType": 6,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"type\": \"datetime\", \"displayFormat\": \"dd.MM.yyyy HH:mm\", \"useMaskBehavior\": true}"
|
||||
},
|
||||
{
|
||||
"FieldName": "ParentTaskId",
|
||||
"CaptionName": "App.Listform.ListformField.ParentTaskId",
|
||||
"TurkishCaption": "Üst Görev",
|
||||
"EnglishCaption": "Parent Task",
|
||||
"EditorType": "dxSelectBox",
|
||||
"DbSourceType": 9,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"searchEnabled\": true, \"showClearButton\": true}",
|
||||
"LookupDataSourceType": 2,
|
||||
"LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM dbo.Prj_T_Task WHERE IsDeleted = 0 ORDER BY Name",
|
||||
"ValueExpr": "Key",
|
||||
"DisplayExpr": "Name"
|
||||
},
|
||||
{
|
||||
"FieldName": "IsFavorite",
|
||||
"CaptionName": "App.Listform.ListformField.IsFavorite",
|
||||
"TurkishCaption": "Favori",
|
||||
"EnglishCaption": "Favorite",
|
||||
"EditorType": "dxCheckBox",
|
||||
"DbSourceType": 3,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"Caption": "Açıklama",
|
||||
"ColCount": 1,
|
||||
"Items": [
|
||||
{
|
||||
"FieldName": "Description",
|
||||
"CaptionName": "App.Listform.ListformField.Description",
|
||||
"TurkishCaption": "Açıklama",
|
||||
"EnglishCaption": "Description",
|
||||
"EditorType": "dxHtmlEditor",
|
||||
"DbSourceType": 16,
|
||||
"IsRequired": false,
|
||||
"IncludeInEditingForm": true,
|
||||
"ColSpan": 1,
|
||||
"EditorOptions": "{\"valueType\": \"html\", \"height\": 320, \"toolbar\": {\"multiline\": false, \"items\": [\"undo\", \"redo\", \"separator\", \"bold\", \"italic\", \"strike\", \"underline\", \"separator\", \"alignLeft\", \"alignCenter\", \"alignRight\", \"alignJustify\", \"separator\", \"orderedList\", \"bulletList\", \"separator\", \"header\", \"separator\", \"color\", \"background\", \"separator\", \"link\", \"image\", \"separator\", \"clear\", \"codeBlock\", \"blockquote\"]}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"SubForms": [
|
||||
{
|
||||
"TabType": "List",
|
||||
"TabTitle": "App.Prj.TaskTimesheets",
|
||||
"Code": "App.Prj.TaskTimesheets",
|
||||
"IsRefresh": true,
|
||||
"Relation": [
|
||||
{
|
||||
"ParentFieldName": "Id",
|
||||
"ChildFieldName": "TaskId",
|
||||
"DbType": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TabType": "List",
|
||||
"TabTitle": "App.Prj.TaskSubTasks",
|
||||
"Code": "App.Prj.TaskSubTasks",
|
||||
"IsRefresh": true,
|
||||
"Relation": [
|
||||
{
|
||||
"ParentFieldName": "Id",
|
||||
"ChildFieldName": "ParentTaskId",
|
||||
"DbType": 9
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TabType": "List",
|
||||
"TabTitle": "App.Prj.TaskDependencies",
|
||||
"Code": "App.Prj.TaskDependencies",
|
||||
"IsRefresh": true,
|
||||
"Relation": [
|
||||
{
|
||||
"ParentFieldName": "Id",
|
||||
"ChildFieldName": "TaskId",
|
||||
"DbType": 9
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"Widgets": []
|
||||
},
|
||||
"IsDeletedField": true,
|
||||
"IsCreatedField": true,
|
||||
"InsertedRecords": {
|
||||
"LanguageKeys": [
|
||||
"App.Prj.Tasks"
|
||||
],
|
||||
"PermissionGroupNames": [],
|
||||
"PermissionNames": [
|
||||
"App.Prj.Tasks",
|
||||
"App.Prj.Tasks.Create",
|
||||
"App.Prj.Tasks.Update",
|
||||
"App.Prj.Tasks.Delete",
|
||||
"App.Prj.Tasks.Export",
|
||||
"App.Prj.Tasks.Import",
|
||||
"App.Prj.Tasks.Note"
|
||||
],
|
||||
"MenuCodes": [
|
||||
"App.Prj.Tasks"
|
||||
],
|
||||
"DataSourceCodes": []
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ import Gantt, {
|
|||
Toolbar,
|
||||
Validation,
|
||||
} from 'devextreme-react/gantt'
|
||||
import { useCallback, useEffect, useRef, useState } from 'react'
|
||||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import PageTitle from '@/components/shared/PageTitle'
|
||||
import { useStylesheet } from '@/utils/hooks/useStylesheet'
|
||||
import { useListFormCustomDataSource } from './useListFormCustomDataSource'
|
||||
|
|
@ -39,11 +39,14 @@ import {
|
|||
useWidgetGroupHeight,
|
||||
} from './shared/hooks'
|
||||
import GridFilterDialogs from './GridFilterDialogs'
|
||||
import { useStoreState } from '@/store'
|
||||
|
||||
type GanttInstance = ReturnType<GanttRef['instance']>
|
||||
type GanttTreeListInstance = {
|
||||
element: () => HTMLElement
|
||||
getVisibleColumns: () => Array<Record<string, any>>
|
||||
option: (name: string, value?: unknown) => any
|
||||
showColumnChooser: () => void
|
||||
state: {
|
||||
(): Record<string, any>
|
||||
(value: Record<string, any> | null): void
|
||||
|
|
@ -69,6 +72,10 @@ interface GanttViewProps {
|
|||
const GanttView = (props: GanttViewProps) => {
|
||||
const { listFormCode, searchParams, isSubForm, gridDto: extGridDto } = props
|
||||
const { translate } = useLocalization()
|
||||
const currentCulture = useStoreState(
|
||||
(state) => state.abpConfig.config?.localization.currentCulture.cultureName,
|
||||
)
|
||||
const localizationTexts = useStoreState((state) => state.abpConfig.texts)
|
||||
const isPwaMode = usePWA()
|
||||
|
||||
// Eskiden Helmet'in <link> çocuğuydu; koşul aynen korunuyor.
|
||||
|
|
@ -128,22 +135,49 @@ const GanttView = (props: GanttViewProps) => {
|
|||
gridRef,
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
if (!gridDto) return
|
||||
// Kolonlar dil değiştiğinde de yeniden üretilir.
|
||||
const memoizedColumns = useMemo(() => {
|
||||
if (!gridDto) return undefined
|
||||
|
||||
const cols = getBandedColumns()
|
||||
setColumnData(cols)
|
||||
return getBandedColumns()
|
||||
// getBandedColumns her render'da yeni referans üretebildiği için bağımlılığa alınmaz.
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [gridDto, currentCulture, localizationTexts])
|
||||
|
||||
const dataSource = createSelectDataSource(
|
||||
// Gantt, dataSource'u prop olarak aldigi icin ilk yukleme widget kurulurken,
|
||||
// yani gridRef atanmadan once calisir. Kolonlar store'a verilmezse ilk yuklemede
|
||||
// multiValue alanlar '|' ile ayrilmadan kalir ve hucrede ham deger gorunur.
|
||||
const memoizedDataSource = useMemo(() => {
|
||||
if (!gridDto) return undefined
|
||||
|
||||
return createSelectDataSource(
|
||||
gridDto.gridOptions,
|
||||
listFormCode,
|
||||
searchParams,
|
||||
layout,
|
||||
undefined,
|
||||
memoizedColumns,
|
||||
)
|
||||
}, [createSelectDataSource, gridDto, layout, listFormCode, memoizedColumns, searchParams])
|
||||
|
||||
// Cizelgede zaten gorsellesen alanlar (baslangic/bitis/ilerleme/ust gorev) gorev
|
||||
// listesinde ikinci kez yer kaplamasin; gerekirse Sutun Secici'den geri acilir.
|
||||
const ganttColumns = useMemo(() => {
|
||||
const options = gridDto?.gridOptions.ganttOptionDto
|
||||
const chartFields = new Set(
|
||||
[options?.parentIdExpr, options?.startExpr, options?.endExpr, options?.progressExpr].filter(
|
||||
Boolean,
|
||||
) as string[],
|
||||
)
|
||||
|
||||
setGanttDataSource(dataSource)
|
||||
}, [createSelectDataSource, getBandedColumns, gridDto, layout, listFormCode, searchParams])
|
||||
return (columnData ?? [])
|
||||
.filter((column: any) => column.type !== 'buttons')
|
||||
.map((column: any) =>
|
||||
chartFields.has(column.dataField) ? { ...column, visible: false } : column,
|
||||
)
|
||||
}, [columnData, gridDto])
|
||||
|
||||
useEffect(() => setColumnData(memoizedColumns), [memoizedColumns])
|
||||
useEffect(() => setGanttDataSource(memoizedDataSource), [memoizedDataSource])
|
||||
|
||||
const settingButtonClick = useCallback(() => {
|
||||
window.open(
|
||||
|
|
@ -177,6 +211,21 @@ const GanttView = (props: GanttViewProps) => {
|
|||
[translate],
|
||||
)
|
||||
|
||||
// Gantt'in kendi sutun secicisi yok; ici TreeList oldugu icin onun secicisi acilir.
|
||||
// Gizleme/gosterme TreeList state'ine yazildigindan kaydedilen gorunume de dahil olur.
|
||||
const showColumnChooser = useCallback(() => {
|
||||
const gantt = gridRef.current?.instance()
|
||||
const treeList = gantt ? getGanttTreeList(gantt) : undefined
|
||||
if (!treeList) return
|
||||
|
||||
treeList.option('columnChooser', {
|
||||
enabled: true,
|
||||
mode: gridDto?.gridOptions.columnOptionDto?.columnChooserMode ?? 'select',
|
||||
title: translate('::App.ListForm.ColumnChooser'),
|
||||
})
|
||||
treeList.showColumnChooser()
|
||||
}, [gridDto, translate])
|
||||
|
||||
const getCurrentState = useCallback((gantt: GanttInstance) => {
|
||||
const treeList = getGanttTreeList(gantt)
|
||||
const state = (treeList?.state() ?? {}) as Record<string, any>
|
||||
|
|
@ -404,6 +453,20 @@ const GanttView = (props: GanttViewProps) => {
|
|||
options={item.options}
|
||||
/>
|
||||
))}
|
||||
{gridDto.gridOptions.columnOptionDto?.columnChooserEnabled && (
|
||||
<Item
|
||||
location="after"
|
||||
widget="dxButton"
|
||||
locateInMenu="auto"
|
||||
showText="always"
|
||||
options={{
|
||||
icon: 'columnchooser',
|
||||
text: translate('::App.ListForm.ColumnChooser'),
|
||||
hint: translate('::App.ListForm.ColumnChooser'),
|
||||
onClick: showColumnChooser,
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
{gridDto.gridOptions.stateStoringDto?.enabled && (
|
||||
<Item
|
||||
location="after"
|
||||
|
|
@ -466,11 +529,9 @@ const GanttView = (props: GanttViewProps) => {
|
|||
<Validation autoUpdateParentTasks={true} />
|
||||
<ContextMenu enabled={false} />
|
||||
|
||||
{columnData
|
||||
.filter((col) => col.type != 'buttons')
|
||||
.map((col: any) => (
|
||||
<Column key={col.dataField} {...col} />
|
||||
))}
|
||||
{ganttColumns.map((col: any) => (
|
||||
<Column key={col.dataField} {...col} />
|
||||
))}
|
||||
</Gantt>
|
||||
<GridFilterDialogs
|
||||
gridRef={ganttFilterRef}
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@ import { updateWorkflowApprovalToolbarItems, useToolbar } from './useToolbar'
|
|||
import WidgetGroup from '@/components/ui/Widget/WidgetGroup'
|
||||
import { GridExtraFilterToolbar } from './GridExtraFilterToolbar'
|
||||
import { layoutTypes } from '../admin/listForm/edit/types'
|
||||
import { useListFormCustomDataSource } from './useListFormCustomDataSource'
|
||||
import {
|
||||
resolveStoreKeyFieldName,
|
||||
useListFormCustomDataSource,
|
||||
} from './useListFormCustomDataSource'
|
||||
import { useListFormColumns } from './useListFormColumns'
|
||||
import { orderListToolbarItems } from './toolbarOrder'
|
||||
import { useStoreState } from '@/store/store'
|
||||
|
|
@ -525,6 +528,10 @@ const Tree = (props: TreeProps) => {
|
|||
const gridOptions = gridDto?.gridOptions
|
||||
const treeOptions = gridOptions?.treeOptionDto
|
||||
const autoExpandAll = treeOptions?.autoExpandAll ?? false
|
||||
// Store'un anahtariyla ayni olmak zorunda; farkli olursa DevExtreme E1044 firlatir.
|
||||
const treeKeyExpr = gridOptions
|
||||
? resolveStoreKeyFieldName(gridOptions, layoutTypes.tree)
|
||||
: undefined
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
@ -550,7 +557,7 @@ const Tree = (props: TreeProps) => {
|
|||
}
|
||||
width={gridOptions.width || '100%'}
|
||||
dataStructure="plain"
|
||||
keyExpr={treeOptions?.keyExpr}
|
||||
keyExpr={treeKeyExpr}
|
||||
parentIdExpr={treeOptions?.parentIdExpr}
|
||||
hasItemsExpr={treeOptions?.hasItemsExpr}
|
||||
rootValue={
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ import type { GanttRef } from 'devextreme-react/cjs/gantt'
|
|||
import type { SchedulerRef } from 'devextreme-react/cjs/scheduler'
|
||||
import type { CardViewRef, CardViewTypes } from 'devextreme-react/cjs/card-view'
|
||||
|
||||
|
||||
/** URL'den gelen varsayılan filtre ile grid filtresini `and` ile birleştirir. */
|
||||
const mergeWithDefaultFilter = (gridFilter: any, searchParams?: URLSearchParams) => {
|
||||
const defaultFilter = safeJsonParse(
|
||||
|
|
@ -64,6 +63,19 @@ const toInsertedRowData = (values: any, responseData: any, keyFieldName?: string
|
|||
return values
|
||||
}
|
||||
|
||||
/**
|
||||
* CustomStore'un anahtar alani. Tree'de hiyerarsiyi kuran `treeOptionDto.keyExpr`
|
||||
* kullanilir; bos birakilmissa `KeyFieldName`'e duser. TreeList'e gecilen `keyExpr`
|
||||
* de bu fonksiyondan okunmalidir, aksi halde DevExtreme E1044 firlatir.
|
||||
*/
|
||||
export const resolveStoreKeyFieldName = (
|
||||
gridOptions: GridOptionsDto,
|
||||
layout?: ListViewLayoutType | string,
|
||||
) =>
|
||||
layout === layoutTypes.tree
|
||||
? gridOptions.treeOptionDto?.keyExpr || gridOptions.keyFieldName
|
||||
: gridOptions.keyFieldName
|
||||
|
||||
const useListFormCustomDataSource = ({
|
||||
gridRef,
|
||||
}: {
|
||||
|
|
@ -87,10 +99,7 @@ const useListFormCustomDataSource = ({
|
|||
// fakat insert/update/delete uclari her zaman ListForm'daki KeyFieldName ile eslesme yapar.
|
||||
// Iki alan farkliysa sunucuya satirin gercek anahtar degeri gonderilir; aksi halde
|
||||
// WHERE sartina hicbir kayit dusmez ve islem sessizce bos doner.
|
||||
const storeKeyFieldName =
|
||||
layout === layoutTypes.tree
|
||||
? gridOptions.treeOptionDto?.keyExpr
|
||||
: gridOptions.keyFieldName
|
||||
const storeKeyFieldName = resolveStoreKeyFieldName(gridOptions, layout)
|
||||
const usesAlternateStoreKey =
|
||||
!!gridOptions.keyFieldName &&
|
||||
!!storeKeyFieldName &&
|
||||
|
|
@ -114,27 +123,27 @@ const useListFormCustomDataSource = ({
|
|||
if (urlSort && !loadOptions.sort) {
|
||||
loadOptions.sort = safeJsonParse(urlSort, undefined, 'Sort parse error:')
|
||||
}
|
||||
|
||||
|
||||
const parameters = getLoadOptions(loadOptions, {
|
||||
listFormCode,
|
||||
filter: '',
|
||||
createDeleteQuery: searchParams?.get('createDeleteQuery'),
|
||||
chart: layout === layoutTypes.chart,
|
||||
})
|
||||
|
||||
|
||||
// Chart için group ve groupSummary parametreleri ekle
|
||||
if (layout === layoutTypes.chart && gridOptions.seriesDto && gridOptions.seriesDto.length > 0) {
|
||||
// Tüm series'lerin unique argumentField'larını topla
|
||||
const allArgumentFields = [...new Set(gridOptions.seriesDto.map(s => s.argumentField).filter(Boolean))] as string[]
|
||||
|
||||
|
||||
// İlk argumentField üzerinden group yap (chart tek bir X ekseni kullanır)
|
||||
if (allArgumentFields.length > 0) {
|
||||
loadOptions.group = allArgumentFields.map(field => ({
|
||||
selector: field as string,
|
||||
isExpanded: false
|
||||
loadOptions.group = allArgumentFields.map(field => ({
|
||||
selector: field as string,
|
||||
isExpanded: false
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
// Tüm series'lerin valueField'ları için summary hesapla
|
||||
const groupSummaries: any[] = []
|
||||
gridOptions.seriesDto.forEach(series => {
|
||||
|
|
@ -145,11 +154,11 @@ const useListFormCustomDataSource = ({
|
|||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
if (groupSummaries.length > 0) {
|
||||
loadOptions.groupSummary = groupSummaries
|
||||
}
|
||||
|
||||
|
||||
// Parametreleri tekrar oluştur
|
||||
const chartParameters = getLoadOptions(loadOptions, {
|
||||
listFormCode,
|
||||
|
|
@ -157,20 +166,11 @@ const useListFormCustomDataSource = ({
|
|||
createDeleteQuery: searchParams?.get('createDeleteQuery'),
|
||||
chart: layout === layoutTypes.chart,
|
||||
})
|
||||
|
||||
|
||||
Object.assign(parameters, chartParameters)
|
||||
}
|
||||
//editing asamasinda her bir field de yapilan degisiklik load istegi olarak buraya dusuyor.
|
||||
//TODO: bu bug halen devam ediyor!!
|
||||
//Bunu engellemek icin eklendi.
|
||||
//if (!params.hasOwnProperty('requireTotalCount')) {
|
||||
// return;
|
||||
//}
|
||||
try {
|
||||
if (gridRef?.current) {
|
||||
//TODO:
|
||||
}
|
||||
// Type guard to handle union type for gridRef
|
||||
// Grid'e set edilmis kolonlar varsa onlar, yoksa cagiranin verdigi liste kullanilir.
|
||||
let columns = cols
|
||||
if (gridRef?.current?.instance()) {
|
||||
const instance = gridRef?.current?.instance() as any
|
||||
|
|
@ -209,36 +209,36 @@ const useListFormCustomDataSource = ({
|
|||
)
|
||||
|
||||
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
||||
|
||||
|
||||
// Chart için grouped data'yı chart formatına çevir
|
||||
if (layout === layoutTypes.chart && Array.isArray(response.data.data)) {
|
||||
const flattenGroupedData = (items: any[], parentKeys: any = {}): any[] => {
|
||||
const result: any[] = []
|
||||
|
||||
|
||||
items.forEach((item: any) => {
|
||||
if (item.items && item.items.length > 0) {
|
||||
// Alt grup var, recursive olarak işle
|
||||
const currentKeys = { ...parentKeys }
|
||||
|
||||
|
||||
// Bu level'daki key'i ilgili argumentField'a map'le
|
||||
gridOptions.seriesDto?.forEach(series => {
|
||||
if (series.argumentField && !currentKeys[series.argumentField]) {
|
||||
currentKeys[series.argumentField] = item.key
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
result.push(...flattenGroupedData(item.items, currentKeys))
|
||||
} else {
|
||||
// Leaf node - gerçek data
|
||||
const transformed: any = { ...parentKeys }
|
||||
|
||||
|
||||
// Son level'daki key'i ekle
|
||||
gridOptions.seriesDto?.forEach(series => {
|
||||
if (series.argumentField && item.key !== undefined && !transformed[series.argumentField]) {
|
||||
transformed[series.argumentField] = item.key
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
// Summary değerlerini valueField'lara map'le
|
||||
if (Array.isArray(item.summary)) {
|
||||
gridOptions.seriesDto?.forEach((series, index) => {
|
||||
|
|
@ -247,14 +247,14 @@ const useListFormCustomDataSource = ({
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
result.push(transformed)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
response.data.data = flattenGroupedData(response.data.data)
|
||||
}
|
||||
|
||||
|
|
@ -263,7 +263,6 @@ const useListFormCustomDataSource = ({
|
|||
columns.forEach((col: any) => {
|
||||
// Column multiValue mu?
|
||||
if (col.extras?.multiValue) {
|
||||
//console.log('MultiValue:', col.dataField, col.extras?.multiValue)
|
||||
// Multivalue column icin header filter acildiginda gonderilen group querysi sonuclari
|
||||
// "key" field ile geliyor, bunu array yapmamiz lazim, bu group query'nin,
|
||||
// bu field icin olup olmadigini anlayabiliriz
|
||||
|
|
@ -279,14 +278,6 @@ const useListFormCustomDataSource = ({
|
|||
row.key = row.key.split(MULTIVALUE_DELIMITER)
|
||||
}
|
||||
} catch (e) {
|
||||
// toast.push(
|
||||
// <Notification type="danger" duration={2000}>
|
||||
// {'multiValue Error'}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'bottom-end',
|
||||
// },
|
||||
// )
|
||||
console.log('multiValue Error', e)
|
||||
// JSON parse sirasinde hata olursa data gosterimi devam etsin
|
||||
}
|
||||
|
|
@ -321,19 +312,10 @@ const useListFormCustomDataSource = ({
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
return retValue
|
||||
} catch (error) {
|
||||
console.error('List form data could not be loaded:', error)
|
||||
// toast.push(
|
||||
// <Notification type="danger" duration={2000}>
|
||||
// Select error
|
||||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'bottom-end',
|
||||
// },
|
||||
// )
|
||||
return {
|
||||
data: [],
|
||||
totalCount: 0,
|
||||
|
|
@ -350,24 +332,13 @@ const useListFormCustomDataSource = ({
|
|||
group: '',
|
||||
})
|
||||
|
||||
const combinedFilter = mergeWithDefaultFilter(parameters.filter, searchParams)
|
||||
|
||||
applyCombinedFilter(parameters, combinedFilter)
|
||||
applyCombinedFilter(parameters, mergeWithDefaultFilter(parameters.filter, searchParams))
|
||||
|
||||
try {
|
||||
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
||||
return response.data.totalCount
|
||||
} catch (error) {
|
||||
console.error('List form total count could not be loaded:', error)
|
||||
// toast.push(
|
||||
// <Notification type="danger" duration={2000}>
|
||||
// TotalCount error
|
||||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'bottom-end',
|
||||
// },
|
||||
// )
|
||||
return 0
|
||||
}
|
||||
},
|
||||
|
|
@ -382,15 +353,6 @@ const useListFormCustomDataSource = ({
|
|||
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
||||
return response.data.data[0]
|
||||
} catch {
|
||||
// toast.push(
|
||||
// <Notification type="danger" duration={2000}>
|
||||
// ByKey error
|
||||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'bottom-end',
|
||||
// },
|
||||
// )
|
||||
return null
|
||||
}
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue