UNPKG

5.06 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
8
9/**
10 * Module : kero dataTable mete
11 * Author : liuyk(liuyk@yonyou.com)
12 * Date : 2016-07-30 14:34:01
13 */
14
15var setMeta = function setMeta(fieldName, key, value) {
16 if (!this.meta[fieldName]) return;
17 var oldValue = this.meta[fieldName][key];
18 var currRow = this.getCurrentRow();
19 this.meta[fieldName][key] = value;
20 if (this.metaChange[fieldName + '.' + key]) this.metaChange[fieldName + '.' + key](-this.metaChange[fieldName + '.' + key]());
21 if (key == 'enable') this.enableChange(-this.enableChange());
22 this.trigger(DataTable.ON_META_CHANGE, {
23 eventType: 'dataTableEvent',
24 dataTable: this.id,
25 field: fieldName,
26 meta: key,
27 oldValue: oldValue,
28 newValue: value
29 });
30 if (currRow && !currRow.getMeta(fieldName, key, false)) {
31 this.trigger(fieldName + '.' + key + '.' + DataTable.ON_CURRENT_META_CHANGE, {
32 eventType: 'dataTableEvent',
33 dataTable: this.id,
34 oldValue: oldValue,
35 newValue: value
36 });
37 }
38};
39
40/**
41 * example: meta: {supplier: {meta: {precision:'3', default: '0239900x', display:'显示名称'}}}
42 */
43var updateMeta = function updateMeta(meta) {
44 if (!meta) {
45 return;
46 }
47 for (var fieldKey in meta) {
48 for (var propKey in meta[fieldKey]) {
49 var oldValue = this.meta[fieldKey][propKey];
50 var newValue = meta[fieldKey][propKey];
51 if (propKey === 'default') {
52 if (!this.meta[fieldKey]['default']) {
53 this.meta[fieldKey]['default'] = {};
54 }
55 this.meta[fieldKey]['default'].value = meta[fieldKey][propKey];
56 } else if (propKey === 'display') {
57 if (!this.meta[fieldKey]['default']) {
58 this.meta[fieldKey]['default'] = {};
59 }
60 this.meta[fieldKey]['default'].display = meta[fieldKey][propKey];
61 } else {
62 this.meta[fieldKey][propKey] = meta[fieldKey][propKey];
63 }
64 if (this.metaChange[fieldKey + '.' + propKey]) this.metaChange[fieldKey + '.' + propKey](-this.metaChange[fieldKey + '.' + propKey]());
65
66 this.trigger(DataTable.ON_META_CHANGE, {
67 eventType: 'dataTableEvent',
68 dataTable: this.id,
69 field: fieldKey,
70 meta: propKey,
71 oldValue: oldValue,
72 newValue: newValue
73 });
74 }
75 }
76};
77
78/**
79 * 字段不存在时,创建字段
80 * @param fieldName
81 * @param options
82 */
83var createField = function createField(fieldName, options) {
84 //字段不主动定义,则不创建
85 if (this.root.strict == true) return;
86 //有子表的情况不创建字段
87 if (fieldName.indexOf('.') != -1) {
88 var fNames = fieldName.split('.');
89 var _name = fNames[0];
90 for (var i = 0, count = fNames.length; i < count; i++) {
91 if (this.meta[_name] && this.meta[_name]['type'] === 'child') return;
92 if (i + 1 < count) _name = _name + '.' + fNames[i + 1];
93 }
94 }
95 if (!this.meta[fieldName]) {
96 this.meta[fieldName] = {};
97 }
98 if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
99 if (options['meta']) {
100 for (var key in options['meta']) {
101 //if (!this.meta[fieldName][key]){
102 this.meta[fieldName]['meta'][key] = options['meta'][key];
103 //}
104 }
105 } else {
106 for (var key in options) {
107 //if (!this.meta[fieldName][key]){
108 this.meta[fieldName][key] = options[key];
109 //}
110 }
111 }
112 }
113 // 在顶层dataTable上定义field信息
114 if (this.root !== this) {
115 var nsArr = this.ns.split('.');
116 var _fieldMeta = this.root.meta;
117 for (var i = 0; i < nsArr.length; i++) {
118 _fieldMeta[nsArr[i]] = _fieldMeta[nsArr[i]] || {};
119 _fieldMeta[nsArr[i]]['type'] = _fieldMeta[nsArr[i]]['type'] || 'child';
120 _fieldMeta[nsArr[i]]['meta'] = _fieldMeta[nsArr[i]]['meta'] || {};
121 _fieldMeta = _fieldMeta[nsArr[i]]['meta'];
122 }
123 if (!_fieldMeta[fieldName]) {
124 _fieldMeta[fieldName] = {};
125 }
126 if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {
127 for (var key in options) {
128 if (!_fieldMeta[fieldName][key]) {
129 _fieldMeta[fieldName][key] = options[key];
130 }
131 }
132 }
133 }
134};
135
136exports.setMeta = setMeta;
137exports.updateMeta = updateMeta;
138exports.createField = createField;
\No newline at end of file