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) |
|
| `EditorType` | SQL tipinden çıkarılır (aşağıdaki tablo) |
|
||||||
| `DbSourceType` | SQL tipinden `System.Data.DbType` karşılığına eşlenir (§3) |
|
| `DbSourceType` | SQL tipinden `System.Data.DbType` karşılığına eşlenir (§3) |
|
||||||
| `IsRequired` | Kolon `NOT NULL` ise `true` |
|
| `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` |
|
| `TurkishCaption` / `EnglishCaption` | Kolon adı PascalCase'ten kelimelere ayrılır: `OrderNo` → `Order No` |
|
||||||
| `CaptionName` | `App.Listform.ListformField.{KolonAdı}` |
|
| `CaptionName` | `App.Listform.ListformField.{KolonAdı}` |
|
||||||
| `ColSpan` | `1` |
|
| `ColSpan` | `1` |
|
||||||
|
|
@ -1021,6 +1022,12 @@ varsayılan değeri olur ve **yeni kayıtta o alanı otomatik doldurur**.
|
||||||
{
|
{
|
||||||
"Caption": "Genel", "ColCount": 2,
|
"Caption": "Genel", "ColCount": 2,
|
||||||
"Items": [
|
"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",
|
"FieldName": "OrderNo", "CaptionName": "App.Listform.ListformField.OrderNo",
|
||||||
"TurkishCaption": "Sipariş No", "EnglishCaption": "Order No",
|
"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**
|
- `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.
|
`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;
|
- Anahtar alanı (`KeyFieldName`) `Groups` içine **her zaman** koyulur — ilk grubun ilk alanı
|
||||||
yine de tanımlaman doğrudur, çünkü tip bilgisi oradan okunur.
|
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);
|
- `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.
|
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
|
- 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).
|
ile tabloya bağlanır. Custom Component kullanacaksa `crud/{Entity}.json` de yaz (§9).
|
||||||
4. Wizard dosyasında `SelectCommand` = tablo adı, `KeyFieldName` = `Id`,
|
4. Wizard dosyasında `SelectCommand` = tablo adı, `KeyFieldName` = `Id`,
|
||||||
`KeyFieldDbSourceType` = tablodaki `Id` tipinin sayısı, `IsTenant` = tabloda `TenantId` varsa
|
`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.
|
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": {
|
"Wizard": {
|
||||||
"ComponentKind": 1,
|
"ComponentKind": 0,
|
||||||
"WizardName": "RoleList",
|
"WizardName": "Tags",
|
||||||
"ListFormCode": "App.Wizard.RoleList",
|
"ListFormCode": "App.Prj.Tags",
|
||||||
"MenuCode": "App.Wizard.RoleList",
|
"MenuCode": "App.Prj.Tags",
|
||||||
"MenuOrder": 1,
|
"MenuOrder": 2,
|
||||||
"CustomComponentName": "RoleComponent",
|
"CreateMenu": true,
|
||||||
"MenuUrl": "/admin/roles",
|
"MenuUrl": "/admin/list/App.Prj.Tags",
|
||||||
"IsTenant": false,
|
"CustomComponentName": "",
|
||||||
|
"IsTenant": true,
|
||||||
"IsBranch": false,
|
"IsBranch": false,
|
||||||
"IsOrganizationUnit": false,
|
"IsOrganizationUnit": false,
|
||||||
"AllowAdding": true,
|
"AllowAdding": true,
|
||||||
|
|
@ -17,34 +18,34 @@
|
||||||
"ConfirmDelete": true,
|
"ConfirmDelete": true,
|
||||||
"DefaultLayout": "grid",
|
"DefaultLayout": "grid",
|
||||||
"Grid": true,
|
"Grid": true,
|
||||||
"Card": true,
|
"Card": false,
|
||||||
"Pivot": true,
|
"Pivot": false,
|
||||||
|
"Chart": false,
|
||||||
"Tree": false,
|
"Tree": false,
|
||||||
"Chart": true,
|
|
||||||
"Gantt": false,
|
"Gantt": false,
|
||||||
"Scheduler": false,
|
"Scheduler": false,
|
||||||
"Todo": false,
|
"Todo": false,
|
||||||
"LanguageTextMenuEn": "Role List",
|
"LanguageTextMenuEn": "Tags",
|
||||||
"LanguageTextMenuTr": "Role List",
|
"LanguageTextMenuTr": "Etiketler",
|
||||||
"LanguageTextTitleEn": "Role List",
|
"LanguageTextTitleEn": "Tags",
|
||||||
"LanguageTextTitleTr": "Role List",
|
"LanguageTextTitleTr": "Etiketler",
|
||||||
"LanguageTextDescEn": "Role List",
|
"LanguageTextDescEn": "Task tags",
|
||||||
"LanguageTextDescTr": "Role List",
|
"LanguageTextDescTr": "Görev etiketleri",
|
||||||
"LanguageTextMenuParentEn": "Sample",
|
"LanguageTextMenuParentEn": "Project",
|
||||||
"LanguageTextMenuParentTr": "Sample",
|
"LanguageTextMenuParentTr": "Proje",
|
||||||
"PermissionGroupName": "App.Wizard.Sample",
|
"PermissionGroupName": "App.Prj",
|
||||||
"PermissionGroupDisplayNameEn": "Sample",
|
"PermissionGroupDisplayNameEn": "Project",
|
||||||
"PermissionGroupDisplayNameTr": "Sample",
|
"PermissionGroupDisplayNameTr": "Proje",
|
||||||
"MenuParentModuleId": "Sam",
|
"MenuParentCode": "App.Prj",
|
||||||
"MenuParentCode": "App.Wizard.Sample",
|
"MenuParentModuleId": "Prj",
|
||||||
"MenuParentIcon": "FcBookmark",
|
"MenuParentIcon": "FcTimeline",
|
||||||
"MenuIcon": "FcBiohazard",
|
"MenuIcon": "FcRules",
|
||||||
"DataSourceCode": "Default",
|
"DataSourceCode": "Default",
|
||||||
"DataSourceConnectionString": "",
|
"DataSourceConnectionString": "",
|
||||||
"SelectCommandType": 1,
|
"SelectCommandType": 1,
|
||||||
"SelectCommand": "",
|
"SelectCommand": "Prj_T_Tag",
|
||||||
"KeyFieldName": "",
|
"KeyFieldName": "Id",
|
||||||
"KeyFieldDbSourceType": 11,
|
"KeyFieldDbSourceType": 9,
|
||||||
"TreeOptionDto": {
|
"TreeOptionDto": {
|
||||||
"KeyExpr": "",
|
"KeyExpr": "",
|
||||||
"ParentIdExpr": "",
|
"ParentIdExpr": "",
|
||||||
|
|
@ -114,7 +115,7 @@
|
||||||
"PriorityExpr": "",
|
"PriorityExpr": "",
|
||||||
"CompletedExpr": "",
|
"CompletedExpr": "",
|
||||||
"OrderExpr": "",
|
"OrderExpr": "",
|
||||||
"StatusOrder": "Backlog, Ready to Start, In Progress, Code Review, Testing, Staging",
|
"StatusOrder": "",
|
||||||
"AllowDragging": true
|
"AllowDragging": true
|
||||||
},
|
},
|
||||||
"WorkflowDto": {
|
"WorkflowDto": {
|
||||||
|
|
@ -126,26 +127,71 @@
|
||||||
"ApprovalIsResetWorkflow": false,
|
"ApprovalIsResetWorkflow": false,
|
||||||
"Criteria": []
|
"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": [],
|
"SubForms": [],
|
||||||
"Widgets": []
|
"Widgets": []
|
||||||
},
|
},
|
||||||
"IsDeletedField": false,
|
"IsDeletedField": true,
|
||||||
"IsCreatedField": false,
|
"IsCreatedField": true,
|
||||||
"InsertedRecords": {
|
"InsertedRecords": {
|
||||||
"LanguageKeys": [
|
"LanguageKeys": [
|
||||||
"App.Wizard.RoleList"
|
"App.Prj.Tags"
|
||||||
],
|
],
|
||||||
"PermissionGroupNames": [],
|
"PermissionGroupNames": [],
|
||||||
"PermissionNames": [
|
"PermissionNames": [
|
||||||
"App.Wizard.RoleList",
|
"App.Prj.Tags",
|
||||||
"App.Wizard.RoleList.Create",
|
"App.Prj.Tags.Create",
|
||||||
"App.Wizard.RoleList.Update",
|
"App.Prj.Tags.Update",
|
||||||
"App.Wizard.RoleList.Delete"
|
"App.Prj.Tags.Delete",
|
||||||
|
"App.Prj.Tags.Export",
|
||||||
|
"App.Prj.Tags.Import",
|
||||||
|
"App.Prj.Tags.Note"
|
||||||
],
|
],
|
||||||
"MenuCodes": [
|
"MenuCodes": [
|
||||||
"App.Wizard.RoleList"
|
"App.Prj",
|
||||||
|
"App.Prj.Tags"
|
||||||
],
|
],
|
||||||
"DataSourceCodes": []
|
"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,
|
Toolbar,
|
||||||
Validation,
|
Validation,
|
||||||
} from 'devextreme-react/gantt'
|
} 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 PageTitle from '@/components/shared/PageTitle'
|
||||||
import { useStylesheet } from '@/utils/hooks/useStylesheet'
|
import { useStylesheet } from '@/utils/hooks/useStylesheet'
|
||||||
import { useListFormCustomDataSource } from './useListFormCustomDataSource'
|
import { useListFormCustomDataSource } from './useListFormCustomDataSource'
|
||||||
|
|
@ -39,11 +39,14 @@ import {
|
||||||
useWidgetGroupHeight,
|
useWidgetGroupHeight,
|
||||||
} from './shared/hooks'
|
} from './shared/hooks'
|
||||||
import GridFilterDialogs from './GridFilterDialogs'
|
import GridFilterDialogs from './GridFilterDialogs'
|
||||||
|
import { useStoreState } from '@/store'
|
||||||
|
|
||||||
type GanttInstance = ReturnType<GanttRef['instance']>
|
type GanttInstance = ReturnType<GanttRef['instance']>
|
||||||
type GanttTreeListInstance = {
|
type GanttTreeListInstance = {
|
||||||
element: () => HTMLElement
|
element: () => HTMLElement
|
||||||
getVisibleColumns: () => Array<Record<string, any>>
|
getVisibleColumns: () => Array<Record<string, any>>
|
||||||
|
option: (name: string, value?: unknown) => any
|
||||||
|
showColumnChooser: () => void
|
||||||
state: {
|
state: {
|
||||||
(): Record<string, any>
|
(): Record<string, any>
|
||||||
(value: Record<string, any> | null): void
|
(value: Record<string, any> | null): void
|
||||||
|
|
@ -69,6 +72,10 @@ interface GanttViewProps {
|
||||||
const GanttView = (props: GanttViewProps) => {
|
const GanttView = (props: GanttViewProps) => {
|
||||||
const { listFormCode, searchParams, isSubForm, gridDto: extGridDto } = props
|
const { listFormCode, searchParams, isSubForm, gridDto: extGridDto } = props
|
||||||
const { translate } = useLocalization()
|
const { translate } = useLocalization()
|
||||||
|
const currentCulture = useStoreState(
|
||||||
|
(state) => state.abpConfig.config?.localization.currentCulture.cultureName,
|
||||||
|
)
|
||||||
|
const localizationTexts = useStoreState((state) => state.abpConfig.texts)
|
||||||
const isPwaMode = usePWA()
|
const isPwaMode = usePWA()
|
||||||
|
|
||||||
// Eskiden Helmet'in <link> çocuğuydu; koşul aynen korunuyor.
|
// Eskiden Helmet'in <link> çocuğuydu; koşul aynen korunuyor.
|
||||||
|
|
@ -128,22 +135,49 @@ const GanttView = (props: GanttViewProps) => {
|
||||||
gridRef,
|
gridRef,
|
||||||
})
|
})
|
||||||
|
|
||||||
useEffect(() => {
|
// Kolonlar dil değiştiğinde de yeniden üretilir.
|
||||||
if (!gridDto) return
|
const memoizedColumns = useMemo(() => {
|
||||||
|
if (!gridDto) return undefined
|
||||||
|
|
||||||
const cols = getBandedColumns()
|
return getBandedColumns()
|
||||||
setColumnData(cols)
|
// 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,
|
gridDto.gridOptions,
|
||||||
listFormCode,
|
listFormCode,
|
||||||
searchParams,
|
searchParams,
|
||||||
layout,
|
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)
|
return (columnData ?? [])
|
||||||
}, [createSelectDataSource, getBandedColumns, gridDto, layout, listFormCode, searchParams])
|
.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(() => {
|
const settingButtonClick = useCallback(() => {
|
||||||
window.open(
|
window.open(
|
||||||
|
|
@ -177,6 +211,21 @@ const GanttView = (props: GanttViewProps) => {
|
||||||
[translate],
|
[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 getCurrentState = useCallback((gantt: GanttInstance) => {
|
||||||
const treeList = getGanttTreeList(gantt)
|
const treeList = getGanttTreeList(gantt)
|
||||||
const state = (treeList?.state() ?? {}) as Record<string, any>
|
const state = (treeList?.state() ?? {}) as Record<string, any>
|
||||||
|
|
@ -404,6 +453,20 @@ const GanttView = (props: GanttViewProps) => {
|
||||||
options={item.options}
|
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 && (
|
{gridDto.gridOptions.stateStoringDto?.enabled && (
|
||||||
<Item
|
<Item
|
||||||
location="after"
|
location="after"
|
||||||
|
|
@ -466,11 +529,9 @@ const GanttView = (props: GanttViewProps) => {
|
||||||
<Validation autoUpdateParentTasks={true} />
|
<Validation autoUpdateParentTasks={true} />
|
||||||
<ContextMenu enabled={false} />
|
<ContextMenu enabled={false} />
|
||||||
|
|
||||||
{columnData
|
{ganttColumns.map((col: any) => (
|
||||||
.filter((col) => col.type != 'buttons')
|
<Column key={col.dataField} {...col} />
|
||||||
.map((col: any) => (
|
))}
|
||||||
<Column key={col.dataField} {...col} />
|
|
||||||
))}
|
|
||||||
</Gantt>
|
</Gantt>
|
||||||
<GridFilterDialogs
|
<GridFilterDialogs
|
||||||
gridRef={ganttFilterRef}
|
gridRef={ganttFilterRef}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,10 @@ import { updateWorkflowApprovalToolbarItems, useToolbar } from './useToolbar'
|
||||||
import WidgetGroup from '@/components/ui/Widget/WidgetGroup'
|
import WidgetGroup from '@/components/ui/Widget/WidgetGroup'
|
||||||
import { GridExtraFilterToolbar } from './GridExtraFilterToolbar'
|
import { GridExtraFilterToolbar } from './GridExtraFilterToolbar'
|
||||||
import { layoutTypes } from '../admin/listForm/edit/types'
|
import { layoutTypes } from '../admin/listForm/edit/types'
|
||||||
import { useListFormCustomDataSource } from './useListFormCustomDataSource'
|
import {
|
||||||
|
resolveStoreKeyFieldName,
|
||||||
|
useListFormCustomDataSource,
|
||||||
|
} from './useListFormCustomDataSource'
|
||||||
import { useListFormColumns } from './useListFormColumns'
|
import { useListFormColumns } from './useListFormColumns'
|
||||||
import { orderListToolbarItems } from './toolbarOrder'
|
import { orderListToolbarItems } from './toolbarOrder'
|
||||||
import { useStoreState } from '@/store/store'
|
import { useStoreState } from '@/store/store'
|
||||||
|
|
@ -525,6 +528,10 @@ const Tree = (props: TreeProps) => {
|
||||||
const gridOptions = gridDto?.gridOptions
|
const gridOptions = gridDto?.gridOptions
|
||||||
const treeOptions = gridOptions?.treeOptionDto
|
const treeOptions = gridOptions?.treeOptionDto
|
||||||
const autoExpandAll = treeOptions?.autoExpandAll ?? false
|
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 (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|
@ -550,7 +557,7 @@ const Tree = (props: TreeProps) => {
|
||||||
}
|
}
|
||||||
width={gridOptions.width || '100%'}
|
width={gridOptions.width || '100%'}
|
||||||
dataStructure="plain"
|
dataStructure="plain"
|
||||||
keyExpr={treeOptions?.keyExpr}
|
keyExpr={treeKeyExpr}
|
||||||
parentIdExpr={treeOptions?.parentIdExpr}
|
parentIdExpr={treeOptions?.parentIdExpr}
|
||||||
hasItemsExpr={treeOptions?.hasItemsExpr}
|
hasItemsExpr={treeOptions?.hasItemsExpr}
|
||||||
rootValue={
|
rootValue={
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ import type { GanttRef } from 'devextreme-react/cjs/gantt'
|
||||||
import type { SchedulerRef } from 'devextreme-react/cjs/scheduler'
|
import type { SchedulerRef } from 'devextreme-react/cjs/scheduler'
|
||||||
import type { CardViewRef, CardViewTypes } from 'devextreme-react/cjs/card-view'
|
import type { CardViewRef, CardViewTypes } from 'devextreme-react/cjs/card-view'
|
||||||
|
|
||||||
|
|
||||||
/** URL'den gelen varsayılan filtre ile grid filtresini `and` ile birleştirir. */
|
/** URL'den gelen varsayılan filtre ile grid filtresini `and` ile birleştirir. */
|
||||||
const mergeWithDefaultFilter = (gridFilter: any, searchParams?: URLSearchParams) => {
|
const mergeWithDefaultFilter = (gridFilter: any, searchParams?: URLSearchParams) => {
|
||||||
const defaultFilter = safeJsonParse(
|
const defaultFilter = safeJsonParse(
|
||||||
|
|
@ -64,6 +63,19 @@ const toInsertedRowData = (values: any, responseData: any, keyFieldName?: string
|
||||||
return values
|
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 = ({
|
const useListFormCustomDataSource = ({
|
||||||
gridRef,
|
gridRef,
|
||||||
}: {
|
}: {
|
||||||
|
|
@ -87,10 +99,7 @@ const useListFormCustomDataSource = ({
|
||||||
// fakat insert/update/delete uclari her zaman ListForm'daki KeyFieldName ile eslesme yapar.
|
// fakat insert/update/delete uclari her zaman ListForm'daki KeyFieldName ile eslesme yapar.
|
||||||
// Iki alan farkliysa sunucuya satirin gercek anahtar degeri gonderilir; aksi halde
|
// Iki alan farkliysa sunucuya satirin gercek anahtar degeri gonderilir; aksi halde
|
||||||
// WHERE sartina hicbir kayit dusmez ve islem sessizce bos doner.
|
// WHERE sartina hicbir kayit dusmez ve islem sessizce bos doner.
|
||||||
const storeKeyFieldName =
|
const storeKeyFieldName = resolveStoreKeyFieldName(gridOptions, layout)
|
||||||
layout === layoutTypes.tree
|
|
||||||
? gridOptions.treeOptionDto?.keyExpr
|
|
||||||
: gridOptions.keyFieldName
|
|
||||||
const usesAlternateStoreKey =
|
const usesAlternateStoreKey =
|
||||||
!!gridOptions.keyFieldName &&
|
!!gridOptions.keyFieldName &&
|
||||||
!!storeKeyFieldName &&
|
!!storeKeyFieldName &&
|
||||||
|
|
@ -114,27 +123,27 @@ const useListFormCustomDataSource = ({
|
||||||
if (urlSort && !loadOptions.sort) {
|
if (urlSort && !loadOptions.sort) {
|
||||||
loadOptions.sort = safeJsonParse(urlSort, undefined, 'Sort parse error:')
|
loadOptions.sort = safeJsonParse(urlSort, undefined, 'Sort parse error:')
|
||||||
}
|
}
|
||||||
|
|
||||||
const parameters = getLoadOptions(loadOptions, {
|
const parameters = getLoadOptions(loadOptions, {
|
||||||
listFormCode,
|
listFormCode,
|
||||||
filter: '',
|
filter: '',
|
||||||
createDeleteQuery: searchParams?.get('createDeleteQuery'),
|
createDeleteQuery: searchParams?.get('createDeleteQuery'),
|
||||||
chart: layout === layoutTypes.chart,
|
chart: layout === layoutTypes.chart,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Chart için group ve groupSummary parametreleri ekle
|
// Chart için group ve groupSummary parametreleri ekle
|
||||||
if (layout === layoutTypes.chart && gridOptions.seriesDto && gridOptions.seriesDto.length > 0) {
|
if (layout === layoutTypes.chart && gridOptions.seriesDto && gridOptions.seriesDto.length > 0) {
|
||||||
// Tüm series'lerin unique argumentField'larını topla
|
// Tüm series'lerin unique argumentField'larını topla
|
||||||
const allArgumentFields = [...new Set(gridOptions.seriesDto.map(s => s.argumentField).filter(Boolean))] as string[]
|
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)
|
// İlk argumentField üzerinden group yap (chart tek bir X ekseni kullanır)
|
||||||
if (allArgumentFields.length > 0) {
|
if (allArgumentFields.length > 0) {
|
||||||
loadOptions.group = allArgumentFields.map(field => ({
|
loadOptions.group = allArgumentFields.map(field => ({
|
||||||
selector: field as string,
|
selector: field as string,
|
||||||
isExpanded: false
|
isExpanded: false
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tüm series'lerin valueField'ları için summary hesapla
|
// Tüm series'lerin valueField'ları için summary hesapla
|
||||||
const groupSummaries: any[] = []
|
const groupSummaries: any[] = []
|
||||||
gridOptions.seriesDto.forEach(series => {
|
gridOptions.seriesDto.forEach(series => {
|
||||||
|
|
@ -145,11 +154,11 @@ const useListFormCustomDataSource = ({
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
if (groupSummaries.length > 0) {
|
if (groupSummaries.length > 0) {
|
||||||
loadOptions.groupSummary = groupSummaries
|
loadOptions.groupSummary = groupSummaries
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parametreleri tekrar oluştur
|
// Parametreleri tekrar oluştur
|
||||||
const chartParameters = getLoadOptions(loadOptions, {
|
const chartParameters = getLoadOptions(loadOptions, {
|
||||||
listFormCode,
|
listFormCode,
|
||||||
|
|
@ -157,20 +166,11 @@ const useListFormCustomDataSource = ({
|
||||||
createDeleteQuery: searchParams?.get('createDeleteQuery'),
|
createDeleteQuery: searchParams?.get('createDeleteQuery'),
|
||||||
chart: layout === layoutTypes.chart,
|
chart: layout === layoutTypes.chart,
|
||||||
})
|
})
|
||||||
|
|
||||||
Object.assign(parameters, chartParameters)
|
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 {
|
try {
|
||||||
if (gridRef?.current) {
|
// Grid'e set edilmis kolonlar varsa onlar, yoksa cagiranin verdigi liste kullanilir.
|
||||||
//TODO:
|
|
||||||
}
|
|
||||||
// Type guard to handle union type for gridRef
|
|
||||||
let columns = cols
|
let columns = cols
|
||||||
if (gridRef?.current?.instance()) {
|
if (gridRef?.current?.instance()) {
|
||||||
const instance = gridRef?.current?.instance() as any
|
const instance = gridRef?.current?.instance() as any
|
||||||
|
|
@ -209,36 +209,36 @@ const useListFormCustomDataSource = ({
|
||||||
)
|
)
|
||||||
|
|
||||||
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
||||||
|
|
||||||
// Chart için grouped data'yı chart formatına çevir
|
// Chart için grouped data'yı chart formatına çevir
|
||||||
if (layout === layoutTypes.chart && Array.isArray(response.data.data)) {
|
if (layout === layoutTypes.chart && Array.isArray(response.data.data)) {
|
||||||
const flattenGroupedData = (items: any[], parentKeys: any = {}): any[] => {
|
const flattenGroupedData = (items: any[], parentKeys: any = {}): any[] => {
|
||||||
const result: any[] = []
|
const result: any[] = []
|
||||||
|
|
||||||
items.forEach((item: any) => {
|
items.forEach((item: any) => {
|
||||||
if (item.items && item.items.length > 0) {
|
if (item.items && item.items.length > 0) {
|
||||||
// Alt grup var, recursive olarak işle
|
// Alt grup var, recursive olarak işle
|
||||||
const currentKeys = { ...parentKeys }
|
const currentKeys = { ...parentKeys }
|
||||||
|
|
||||||
// Bu level'daki key'i ilgili argumentField'a map'le
|
// Bu level'daki key'i ilgili argumentField'a map'le
|
||||||
gridOptions.seriesDto?.forEach(series => {
|
gridOptions.seriesDto?.forEach(series => {
|
||||||
if (series.argumentField && !currentKeys[series.argumentField]) {
|
if (series.argumentField && !currentKeys[series.argumentField]) {
|
||||||
currentKeys[series.argumentField] = item.key
|
currentKeys[series.argumentField] = item.key
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
result.push(...flattenGroupedData(item.items, currentKeys))
|
result.push(...flattenGroupedData(item.items, currentKeys))
|
||||||
} else {
|
} else {
|
||||||
// Leaf node - gerçek data
|
// Leaf node - gerçek data
|
||||||
const transformed: any = { ...parentKeys }
|
const transformed: any = { ...parentKeys }
|
||||||
|
|
||||||
// Son level'daki key'i ekle
|
// Son level'daki key'i ekle
|
||||||
gridOptions.seriesDto?.forEach(series => {
|
gridOptions.seriesDto?.forEach(series => {
|
||||||
if (series.argumentField && item.key !== undefined && !transformed[series.argumentField]) {
|
if (series.argumentField && item.key !== undefined && !transformed[series.argumentField]) {
|
||||||
transformed[series.argumentField] = item.key
|
transformed[series.argumentField] = item.key
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// Summary değerlerini valueField'lara map'le
|
// Summary değerlerini valueField'lara map'le
|
||||||
if (Array.isArray(item.summary)) {
|
if (Array.isArray(item.summary)) {
|
||||||
gridOptions.seriesDto?.forEach((series, index) => {
|
gridOptions.seriesDto?.forEach((series, index) => {
|
||||||
|
|
@ -247,14 +247,14 @@ const useListFormCustomDataSource = ({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
result.push(transformed)
|
result.push(transformed)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
response.data.data = flattenGroupedData(response.data.data)
|
response.data.data = flattenGroupedData(response.data.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -263,7 +263,6 @@ const useListFormCustomDataSource = ({
|
||||||
columns.forEach((col: any) => {
|
columns.forEach((col: any) => {
|
||||||
// Column multiValue mu?
|
// Column multiValue mu?
|
||||||
if (col.extras?.multiValue) {
|
if (col.extras?.multiValue) {
|
||||||
//console.log('MultiValue:', col.dataField, col.extras?.multiValue)
|
|
||||||
// Multivalue column icin header filter acildiginda gonderilen group querysi sonuclari
|
// Multivalue column icin header filter acildiginda gonderilen group querysi sonuclari
|
||||||
// "key" field ile geliyor, bunu array yapmamiz lazim, bu group query'nin,
|
// "key" field ile geliyor, bunu array yapmamiz lazim, bu group query'nin,
|
||||||
// bu field icin olup olmadigini anlayabiliriz
|
// bu field icin olup olmadigini anlayabiliriz
|
||||||
|
|
@ -279,14 +278,6 @@ const useListFormCustomDataSource = ({
|
||||||
row.key = row.key.split(MULTIVALUE_DELIMITER)
|
row.key = row.key.split(MULTIVALUE_DELIMITER)
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// toast.push(
|
|
||||||
// <Notification type="danger" duration={2000}>
|
|
||||||
// {'multiValue Error'}
|
|
||||||
// </Notification>,
|
|
||||||
// {
|
|
||||||
// placement: 'bottom-end',
|
|
||||||
// },
|
|
||||||
// )
|
|
||||||
console.log('multiValue Error', e)
|
console.log('multiValue Error', e)
|
||||||
// JSON parse sirasinde hata olursa data gosterimi devam etsin
|
// JSON parse sirasinde hata olursa data gosterimi devam etsin
|
||||||
}
|
}
|
||||||
|
|
@ -321,19 +312,10 @@ const useListFormCustomDataSource = ({
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return retValue
|
return retValue
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('List form data could not be loaded:', 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 {
|
return {
|
||||||
data: [],
|
data: [],
|
||||||
totalCount: 0,
|
totalCount: 0,
|
||||||
|
|
@ -350,24 +332,13 @@ const useListFormCustomDataSource = ({
|
||||||
group: '',
|
group: '',
|
||||||
})
|
})
|
||||||
|
|
||||||
const combinedFilter = mergeWithDefaultFilter(parameters.filter, searchParams)
|
applyCombinedFilter(parameters, mergeWithDefaultFilter(parameters.filter, searchParams))
|
||||||
|
|
||||||
applyCombinedFilter(parameters, combinedFilter)
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
||||||
return response.data.totalCount
|
return response.data.totalCount
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('List form total count could not be loaded:', 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
|
return 0
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -382,15 +353,6 @@ const useListFormCustomDataSource = ({
|
||||||
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
const response = await dynamicFetch('list-form-select/select', 'GET', parameters)
|
||||||
return response.data.data[0]
|
return response.data.data[0]
|
||||||
} catch {
|
} catch {
|
||||||
// toast.push(
|
|
||||||
// <Notification type="danger" duration={2000}>
|
|
||||||
// ByKey error
|
|
||||||
// {error.toString()}
|
|
||||||
// </Notification>,
|
|
||||||
// {
|
|
||||||
// placement: 'bottom-end',
|
|
||||||
// },
|
|
||||||
// )
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue