-
Notifications
You must be signed in to change notification settings - Fork 73
/
DataField.js
57 lines (41 loc) · 1.3 KB
/
DataField.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* ### Абстрактное поле ввода
* Тип элемента управления вычисляется по метаданным поля
*
* @module DataField
*
*/
import React from 'react';
import PropTypes from 'prop-types';
import {FieldWithMeta} from './AbstractField';
import FieldSelect from './FieldSelect';
import FieldInfinit from './FieldInfinit';
import FieldText from './FieldText';
import FieldDate from './FieldDate';
import FieldNumber from './FieldNumber';
import FieldToggle from './FieldToggle';
import FieldThreeState from './FieldThreeState';
import control_by_type from 'metadata-abstract-ui/ui';
export default class DataField extends FieldWithMeta {
render() {
const {_meta, props} = this;
const {_obj, _fld, ctrl_type} = props;
const type = ctrl_type || control_by_type(_meta.type, _obj[_fld]);
switch (type) {
case 'ocombo':
return <FieldInfinit {...props} />;
case 'oselect':
return <FieldSelect {...props} />;
case 'calck':
return <FieldNumber {...props} />;
case 'dhxCalendar':
return <FieldDate {...props} />;
case 'ch':
return <FieldToggle {...props} />;
case 'threestate':
return <FieldThreeState {...props} />;
default:
return <FieldText {...props} />;
}
}
}