diff --git a/vue-project/my-kintone-plugin/src/js/conditions.ts b/vue-project/my-kintone-plugin/src/js/conditions.ts index 847b2f8..f80cd68 100644 --- a/vue-project/my-kintone-plugin/src/js/conditions.ts +++ b/vue-project/my-kintone-plugin/src/js/conditions.ts @@ -1,7 +1,9 @@ import type { FieldsInfo } from '@/types/model'; 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'; type ConditionItem = { @@ -18,6 +20,8 @@ export const conditionList: ConditionItem[] = [ { value: 'test', label: 'test combobox', type: 'select', func: (a: string, b: string) => a < b }, ]; +// search from conditionList +// conditionItem = conditionMap[conditionValue] export const conditionMap: Record = conditionList.reduce( (map, item) => { map[item.value] = item; @@ -26,22 +30,21 @@ export const conditionMap: Record = conditionList {} as Record, ); -// Field Type -> Condition type FieldConditions = Partial>; +// FieldType -> ConditionValue[] const fieldConditions: FieldConditions = { SINGLE_LINE_TEXT: ['eq', 'ne'], NUMBER: ['ne', 'test'], } as const; +// fieldCode -> conditionList: ConditionItem[] export const getAvailableCondition = (fieldCode: string, { fields }: FieldsInfo) => { - if (!fieldCode||!fields) return; + if (!fieldCode || !fields) return; const conditions = fieldConditions[fields[fieldCode]?.type] || []; return conditions.map((condition) => conditionMap[condition]); }; -// Condition -> Component - const component = { '': undefined, input: 'kuc-text',