@jdlinker/linker
Version:
jdLinker 系统模块
56 lines (52 loc) • 1.22 kB
text/typescript
import { isBoolean, isEqual } from 'lodash-es';
export type DropdownButtonOptions = {
label: string;
value: string;
children?: DropdownButtonOptions[];
[key: string]: any;
};
export const getComponent = (type: string): string => {
switch (type) {
case 'int':
case 'long':
case 'float':
case 'double':
return type;
case 'metric':
case 'enum':
case 'boolean':
return 'menu';
case 'date':
return 'date';
case 'tree':
return 'tree';
case 'file':
return 'file';
case 'geoPoint':
return 'geoPoint';
default:
return 'input';
}
};
export const getOption = (
data: any[],
value?: string | number | boolean,
key: string = 'name'
): DropdownButtonOptions | any => {
let option;
if (value === undefined && value === null) return option;
const _value = isBoolean(value) ? String(value) : value;
for (let i = 0; i < data.length; i++) {
const item = data[i];
if (isEqual(item[key], _value)) {
option = data[i];
break;
} else if (item.children && item.children.length) {
option = getOption(item.children, value, key);
if (option) {
break;
}
}
}
return option;
};