import { EventScenarioFieldIcon, ProjectId, ScenarioFieldConfigIcon, ScenarioFieldConfigId, ScenarioFieldConfigObjectType, ScenarioProTemplateConfigType, TestcaseScenarioFieldIcon, TaskflowId, TaskScenarioFieldIcon, UserId, OrganizationId, ApplicationId, TaskBasicScenarioFieldType } from 'teambition-types'; import { ScenarioFieldSchema, BasicScenarioFieldSchema, EventScenarioFieldSchema, TaskScenarioFieldSchema, TestcaseScenarioFieldSchema, ApplicationScenarioFieldSchema } from './ScenarioField'; import { TaskflowStatusSnippet } from './TaskflowStatus'; export interface ScenarioFieldConfigSchema { _boundToObjectId: OrganizationId | ProjectId | ApplicationId | null; _creatorId: UserId; _id: ScenarioFieldConfigId; _originalId: ScenarioFieldConfigId | null; _projectId: ProjectId; basicfields?: BasicScenarioFieldSchema[]; boundToObjectType: 'organization' | 'project' | 'app'; created: string; displayed: boolean; hasChanged: boolean; icon: ScenarioFieldConfigIcon; isDefault: boolean; isTraceEnabled: boolean; name: string; objectType: ScenarioFieldConfigObjectType; scenariofields: ScenarioFieldSchema[]; type: 'default' | 'official' | 'normal'; proTemplateConfigType?: string | null; setting?: { removable?: boolean; taskflowChangeable?: boolean; subtaskSfcIds?: ScenarioFieldConfigId[]; }; updated: string; source?: string; } export interface TaskScenarioFieldConfigSchema extends ScenarioFieldConfigSchema { basicfields: BasicScenarioFieldSchema[]; icon: TaskScenarioFieldIcon; objectType: 'task'; scenariofields: TaskScenarioFieldSchema[]; proTemplateConfigType: ScenarioProTemplateConfigType; _taskflowId: TaskflowId; taskflowstatuses?: TaskflowStatusSnippet[]; } export interface EventScenarioFieldConfigSchema extends ScenarioFieldConfigSchema { icon: EventScenarioFieldIcon; objectType: 'event'; scenariofields: EventScenarioFieldSchema[]; _taskflowId: null; proTemplateConfigType: null; } export interface TestcaseScenarioFieldConfigSchema extends ScenarioFieldConfigSchema { icon: TestcaseScenarioFieldIcon; objectType: 'testcase'; scenariofields: TestcaseScenarioFieldSchema[]; proTemplateConfigType: null; _taskflowId: TaskflowId; taskflowstatuses?: TaskflowStatusSnippet[]; } export interface ApplicationScenarioFieldConfigSchema extends ScenarioFieldConfigSchema { scenariofields: ApplicationScenarioFieldSchema[]; preference?: { workhourUnit: 'hour' | 'day' | 'minute'; workhourUnitValue: number; projectId: ProjectId; organizationId: OrganizationId; }; }