Files
ai-code-app/src/app/main/mainView/constants.tsx

119 lines
3.6 KiB
TypeScript
Executable File

import type { PlanFilterStatus, PlanQuickFilter } from '../../../features/planBoard';
import type { PlanSidebarKey, PlaySidebarKey } from '../types';
export const PLAN_GROUP_LABEL = '작업';
export const PLAN_FILTER_LABELS: Record<PlanFilterStatus, string> = {
all: '자동화 현황',
'in-progress': '실행 중 (0)',
done: '완료',
error: '실패 (0)',
};
export const DOCS_DEFAULT_FOLDER = 'worklogs';
export const DOCS_FOLDER_LABELS: Record<string, string> = {
worklogs: '작업일지',
features: '기능문서',
components: '컴포넌트문서',
templates: '문서템플릿',
};
export const PLAN_SIDEBAR_LABELS: Record<PlanSidebarKey, string> = {
...PLAN_FILTER_LABELS,
release: 'release (0)',
'release-review': 'release 검수',
board: '작업 요청',
charts: '차트',
schedule: '스케줄',
history: '이력',
'automation-type': '자동화 유형',
'automation-context': 'Context 유형',
'server-command': 'Command',
};
export const PLAN_BASE_OPEN_KEYS = ['plan-group', 'server-group', 'codex-live-group', 'app-log-group'] as const;
export const PLAY_BASE_OPEN_KEYS = ['play-group', 'play-layout-group'] as const;
export const PLAY_LAYOUT_RECORD_PREFIX = 'layout-record:' as const;
export const PLAN_MENU_STATUS_ORDER: PlanFilterStatus[] = ['all', 'in-progress', 'error', 'done'];
export const PLAY_SIDEBAR_LABELS: Record<Extract<PlaySidebarKey, 'layout'>, string> = {
layout: 'Layout Editor',
};
export const PLAN_MENU_ANCHOR_IDS: Partial<Record<PlanSidebarKey, string>> = {
all: 'plan-menu-all',
'in-progress': 'plan-menu-in-progress',
release: 'plan-menu-release',
'release-review': 'plan-menu-release-review',
done: 'plan-menu-done',
error: 'plan-menu-error',
board: 'plan-menu-board',
charts: 'plan-menu-charts',
schedule: 'plan-menu-schedule',
history: 'plan-menu-history',
'automation-type': 'plan-menu-automation-type',
'automation-context': 'plan-menu-automation-context',
'server-command': 'plan-menu-server-command',
};
export function resolvePlanOpenKeys() {
return [...PLAN_BASE_OPEN_KEYS];
}
export function resolvePlayOpenKeys() {
return [...PLAY_BASE_OPEN_KEYS];
}
export function resolveSavedLayoutMenuKey(layoutId: string): PlaySidebarKey {
return `${PLAY_LAYOUT_RECORD_PREFIX}${layoutId}`;
}
export function resolveSavedLayoutIdFromMenuKey(key: PlaySidebarKey) {
return key.startsWith(PLAY_LAYOUT_RECORD_PREFIX) ? key.slice(PLAY_LAYOUT_RECORD_PREFIX.length) : null;
}
export function resolvePlaySidebarLabel(selectedPlayMenu: PlaySidebarKey, savedLayouts: Array<{ id: string; name: string }>) {
const savedLayoutId = resolveSavedLayoutIdFromMenuKey(selectedPlayMenu);
if (selectedPlayMenu === 'layout') {
return PLAY_SIDEBAR_LABELS[selectedPlayMenu];
}
return savedLayouts.find((record) => record.id === savedLayoutId)?.name ?? 'Saved Layout';
}
export function renderPlanMenuLabel(menu: PlanSidebarKey, label: string) {
const anchorId = PLAN_MENU_ANCHOR_IDS[menu];
if (!anchorId) {
return label;
}
return <span id={anchorId}>{label}</span>;
}
export function resolvePlanQuickFilterMenu(filter: PlanQuickFilter): Extract<PlanSidebarKey, 'in-progress' | 'release' | 'error'> {
if (filter === 'working') {
return 'in-progress';
}
return filter === 'release-pending-main' ? 'release' : 'error';
}
export function resolvePlanMenuState(menu: PlanSidebarKey) {
if (menu === 'release') {
return {
quickFilter: 'release-pending-main' as PlanQuickFilter,
};
}
return {
quickFilter: null,
};
}
export function getDocsSectionLabel(section: string) {
return DOCS_FOLDER_LABELS[section] ?? section;
}