1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 | const setMeta = function(fieldName, key, value) {
|
18 | if (!this.meta[fieldName])
|
19 | return;
|
20 | var oldValue = this.meta[fieldName][key]
|
21 | var currRow = this.getCurrentRow();
|
22 | this.meta[fieldName][key] = value
|
23 | if (this.metaChange[fieldName + '.' + key])
|
24 | this.metaChange[fieldName + '.' + key](-this.metaChange[fieldName + '.' + key]());
|
25 | if (key == 'enable')
|
26 | this.enableChange(-this.enableChange())
|
27 | this.trigger(DataTable.ON_META_CHANGE, {
|
28 | eventType: 'dataTableEvent',
|
29 | dataTable: this.id,
|
30 | field: fieldName,
|
31 | meta: key,
|
32 | oldValue: oldValue,
|
33 | newValue: value
|
34 | });
|
35 | if (currRow && !currRow.getMeta(fieldName, key, false)) {
|
36 | this.trigger(fieldName + '.' + key + '.' + DataTable.ON_CURRENT_META_CHANGE, {
|
37 | eventType: 'dataTableEvent',
|
38 | dataTable: this.id,
|
39 | oldValue: oldValue,
|
40 | newValue: value
|
41 | });
|
42 | }
|
43 | }
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 | const updateMeta = function(meta) {
|
55 | if (!meta) {
|
56 | return;
|
57 | }
|
58 | for (var fieldKey in meta) {
|
59 | for (var propKey in meta[fieldKey]) {
|
60 | var oldValue = this.meta[fieldKey][propKey]
|
61 | var newValue = meta[fieldKey][propKey]
|
62 | if (propKey === 'default') {
|
63 | if (!this.meta[fieldKey]['default']) {
|
64 | this.meta[fieldKey]['default'] = {}
|
65 | }
|
66 | this.meta[fieldKey]['default'].value = meta[fieldKey][propKey]
|
67 | } else if (propKey === 'display') {
|
68 | if (!this.meta[fieldKey]['default']) {
|
69 | this.meta[fieldKey]['default'] = {}
|
70 | }
|
71 | this.meta[fieldKey]['default'].display = meta[fieldKey][propKey]
|
72 | } else {
|
73 | this.meta[fieldKey][propKey] = meta[fieldKey][propKey]
|
74 | }
|
75 | if (this.metaChange[fieldKey + '.' + propKey])
|
76 | this.metaChange[fieldKey + '.' + propKey](-this.metaChange[fieldKey + '.' + propKey]());
|
77 |
|
78 | this.trigger(DataTable.ON_META_CHANGE, {
|
79 | eventType: 'dataTableEvent',
|
80 | dataTable: this.id,
|
81 | field: fieldKey,
|
82 | meta: propKey,
|
83 | oldValue: oldValue,
|
84 | newValue: newValue
|
85 | });
|
86 | }
|
87 |
|
88 | }
|
89 | }
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 |
|
96 | const createField = function(fieldName, options) {
|
97 |
|
98 | if (this.root.strict == true)
|
99 | return;
|
100 |
|
101 | if (fieldName.indexOf('.') != -1) {
|
102 | var fNames = fieldName.split('.');
|
103 | var _name = fNames[0];
|
104 | for (var i = 0, count = fNames.length; i < count; i++) {
|
105 | if (this.meta[_name] && this.meta[_name]['type'] === 'child')
|
106 | return;
|
107 | if ((i + 1) < count)
|
108 | _name = _name + '.' + fNames[i + 1]
|
109 | }
|
110 | }
|
111 | if (!this.meta[fieldName]) {
|
112 | this.meta[fieldName] = {}
|
113 | }
|
114 | if (typeof options === 'object') {
|
115 | if (options['meta']) {
|
116 | for (var key in options['meta']) {
|
117 |
|
118 | this.meta[fieldName]['meta'][key] = options['meta'][key];
|
119 |
|
120 | }
|
121 | } else {
|
122 | for (var key in options) {
|
123 |
|
124 | this.meta[fieldName][key] = options[key];
|
125 |
|
126 | }
|
127 | }
|
128 | }
|
129 |
|
130 | if (this.root !== this) {
|
131 | var nsArr = this.ns.split('.')
|
132 | var _fieldMeta = this.root.meta
|
133 | for (var i = 0; i < nsArr.length; i++) {
|
134 | _fieldMeta[nsArr[i]] = _fieldMeta[nsArr[i]] || {}
|
135 | _fieldMeta[nsArr[i]]['type'] = _fieldMeta[nsArr[i]]['type'] || 'child';
|
136 | _fieldMeta[nsArr[i]]['meta'] = _fieldMeta[nsArr[i]]['meta'] || {};
|
137 | _fieldMeta = _fieldMeta[nsArr[i]]['meta'];
|
138 | }
|
139 | if (!_fieldMeta[fieldName]) {
|
140 | _fieldMeta[fieldName] = {}
|
141 | }
|
142 | if (typeof options === 'object') {
|
143 | for (var key in options) {
|
144 | if (!_fieldMeta[fieldName][key]) {
|
145 | _fieldMeta[fieldName][key] = options[key];
|
146 | }
|
147 | }
|
148 | }
|
149 | }
|
150 |
|
151 | }
|
152 |
|
153 | export const metaFunObj = {
|
154 | setMeta: setMeta,
|
155 | updateMeta: updateMeta,
|
156 | createField: createField
|
157 | }
|