add comment

This commit is contained in:
2025-01-22 23:50:54 +08:00
parent 58ad3571cd
commit e022cb5d89

View File

@@ -1,7 +1,9 @@
import type { FieldsInfo } from '@/types/model'; import type { FieldsInfo } from '@/types/model';
import type { FieldType } from './kintone-rest-api-client'; import type { FieldType } from './kintone-rest-api-client';
// Condition // conditionValue = '' | 'eq' | 'ne'
// conditionItem = { value: 'eq', label: '=(等しい)', type: 'input', func: (a: string, b: string) => a === b }
// = conditionMap[conditionValue]
export type ConditionValue = '' | 'eq' | 'ne' | 'test'; export type ConditionValue = '' | 'eq' | 'ne' | 'test';
type ConditionItem = { type ConditionItem = {
@@ -18,6 +20,8 @@ export const conditionList: ConditionItem[] = [
{ value: 'test', label: 'test combobox', type: 'select', func: (a: string, b: string) => a < b }, { value: 'test', label: 'test combobox', type: 'select', func: (a: string, b: string) => a < b },
]; ];
// search from conditionList
// conditionItem = conditionMap[conditionValue]
export const conditionMap: Record<ConditionValue, ConditionItem> = conditionList.reduce( export const conditionMap: Record<ConditionValue, ConditionItem> = conditionList.reduce(
(map, item) => { (map, item) => {
map[item.value] = item; map[item.value] = item;
@@ -26,22 +30,21 @@ export const conditionMap: Record<ConditionValue, ConditionItem> = conditionList
{} as Record<ConditionValue, ConditionItem>, {} as Record<ConditionValue, ConditionItem>,
); );
// Field Type -> Condition
type FieldConditions = Partial<Record<FieldType, ConditionValue[]>>; type FieldConditions = Partial<Record<FieldType, ConditionValue[]>>;
// FieldType -> ConditionValue[]
const fieldConditions: FieldConditions = { const fieldConditions: FieldConditions = {
SINGLE_LINE_TEXT: ['eq', 'ne'], SINGLE_LINE_TEXT: ['eq', 'ne'],
NUMBER: ['ne', 'test'], NUMBER: ['ne', 'test'],
} as const; } as const;
// fieldCode -> conditionList: ConditionItem[]
export const getAvailableCondition = (fieldCode: string, { fields }: FieldsInfo) => { export const getAvailableCondition = (fieldCode: string, { fields }: FieldsInfo) => {
if (!fieldCode || !fields) return; if (!fieldCode || !fields) return;
const conditions = fieldConditions[fields[fieldCode]?.type] || []; const conditions = fieldConditions[fields[fieldCode]?.type] || [];
return conditions.map((condition) => conditionMap[condition]); return conditions.map((condition) => conditionMap[condition]);
}; };
// Condition -> Component
const component = { const component = {
'': undefined, '': undefined,
input: 'kuc-text', input: 'kuc-text',