UNPKG

10.9 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.updateRow = exports.setData = exports.setChildSimpleDataByRowId = exports.setChildValue = exports.setValue = undefined;
7
8var _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; }; /**
9 * Module : kero dataTable row getData
10 * Author : liuyk(liuyk@yonyou.com)
11 * Date : 2016-08-08 13:54:01
12 */
13
14
15var _rowUtil = require('./row-util');
16
17var _util = require('tinper-sparrow/src/util');
18
19/**
20*设置row中某一列的值
21*/
22var setValue = function setValue(fieldName, value, ctx, options) {
23
24 if (arguments.length === 1) {
25 value = fieldName;
26 fieldName = '$data';
27 }
28 var oldValue = this.getValue(fieldName);
29 if (typeof oldValue == 'undefined' || oldValue === null) oldValue = '';
30 if ((0, _rowUtil.eq)(oldValue, value)) return;
31 var event = {
32 eventType: 'dataTableEvent',
33 dataTable: this.parent.id,
34 rowId: this.rowId,
35 field: fieldName,
36 oldValue: oldValue,
37 newValue: value,
38 ctx: ctx || ""
39 };
40 var flag = this.parent.triggerReturn(DataTable.ON_BEFORE_VALUE_CHANGE, event);
41 if (!flag) {
42 (0, _rowUtil._triggerChange)(this, fieldName, oldValue, ctx);
43 return;
44 }
45 (0, _rowUtil._getField)(this, fieldName)['value'] = value;
46 (0, _rowUtil._triggerChange)(this, fieldName, oldValue, ctx);
47};
48
49var setChildValue = function setChildValue(fieldName, value) {
50 var nameArr = fieldName.split('.');
51 var _name = nameArr[0];
52 var _field = this.data[_name]; //_field保存当前_name对应的数据
53 for (var i = 0, count = nameArr.length; i < count; i++) {
54 //最后一级
55 if (i == count - 1) {
56 if (_field['value'] instanceof u.DataTable) {
57 //暂不处理
58 } else {
59 this.setValue(fieldName, value);
60 }
61 } else {
62 if (_field && _field['value'] instanceof u.DataTable) {
63 var row = _field['value'].getCurrentRow();
64 if (row) row.setChildValue(fieldName.replace(_name + '.', ''), value);
65 } else {
66 _name = nameArr[i + 1];
67 _field = _field[_name]; //多层嵌套时_field取子项对应的数据
68 }
69 }
70 }
71};
72
73var setChildSimpleDataByRowId = function setChildSimpleDataByRowId(rowId, data) {
74 var rowIdArr = rowId.split('.');
75 var rowIdLength = rowIdArr.length;
76 if (rowIdLength > 1) {
77 var _childField = rowIdArr[0]; //子表字段
78 var _childObj = this.data[_childField]; // 子表字段存放的obj
79 if (_childObj && _childObj['value'] instanceof u.DataTable) {
80 var rowId = rowIdArr[1];
81 var row = null;
82 if (rowId) row = _childObj['value'].getRowByRowId(rowId);
83 if (row) {
84 if (rowIdArr.length == 2) {
85 row.setSimpleData(data);
86 } else {
87 row.setChildSimpleDataByRowId(fieldName.replace(_childField + '.' + rowId + '.', ''), data);
88 }
89 }
90 }
91 }
92};
93
94/**
95 * [_setData description]
96 * @param {[type]} sourceData
97 * @param {[type]} targetData
98 * @param {[type]} subscribe
99 * @param {[type]} parentKey [父项key,数据项为数组时获取meta值用]
100 */
101var _setData = function _setData(rowObj, sourceData, targetData, subscribe, parentKey, options) {
102 for (var key in sourceData) {
103
104 // 判断是否要放到dataTable中
105 if (options && !options.fieldFlag) {
106 if (!rowObj.parent.getMeta(key)) {
107 continue;
108 }
109 }
110 var _parentKey = parentKey || null;
111 //if (targetData[key]) {
112 targetData[key] = targetData[key] || {};
113 var valueObj = sourceData[key];
114
115 // if (typeof valueObj != 'object'){
116 // if(typeof options == 'object'){
117 // if(options.fieldFlag) {
118 // rowObj.parent.createField(key);
119 // }
120 // }
121 // }
122
123 //if (typeof this.parent.meta[key] === 'undefined') continue;
124 if (valueObj == null || (typeof valueObj === 'undefined' ? 'undefined' : _typeof(valueObj)) != 'object') {
125 // 子表的话只有valueObj为datatable的时候才赋值
126 if (!targetData[key].isChild) {
127 targetData[key]['value'] = rowObj.formatValue(key, valueObj);
128 }
129 if (subscribe === true && oldValue !== targetData[key]['value']) {
130 (0, _rowUtil._triggerChange)(rowObj, key, oldValue);
131 }
132 } else {
133 if (valueObj.error) {
134 if (u.showMessageDialog) u.showMessageDialog({ title: "警告", msg: valueObj.error, backdrop: true });else alert(valueObj.error);
135 } else if (valueObj.value || valueObj.value === null || valueObj.meta || valueObj.value === '' || valueObj.value === '0' || valueObj.value === 0) {
136 var oldValue = targetData[key]['value'];
137 targetData[key]['value'] = rowObj.formatValue(key, valueObj.value);
138 if (subscribe === true && oldValue !== targetData[key]['value']) {
139 (0, _rowUtil._triggerChange)(rowObj, key, oldValue);
140 }
141 for (var k in valueObj.meta) {
142 rowObj.setMeta(key, k, valueObj.meta[k]);
143 }
144 } else if ((0, _util.isArray)(valueObj)) {
145 targetData[key].isChild = true;
146 //ns 是多级数据时的空间名: 最顶层的dataTable没有ns。 f1.f2.f3
147 var _key = _parentKey == null ? key : _parentKey + '.' + key;
148 var ns = rowObj.parent.ns === '' ? key : rowObj.parent.ns + '.' + _key;
149 if (rowObj.parent.meta[_key]) {
150 var meta = rowObj.parent.meta[_key]['meta'];
151 targetData[key].value = new u.DataTable({ root: rowObj.parent.root, ns: ns, meta: meta });
152 targetData[key].value.setSimpleData(valueObj);
153 }
154 } else {
155 _parentKey = _parentKey == null ? key : _parentKey + '.' + key;
156 _setData(rowObj, valueObj, targetData[key], null, _parentKey, options);
157 }
158 }
159 //}
160 }
161};
162
163/**
164 *设置Row数据
165 *@subscribe 是否触发监听
166 */
167var setData = function setData(data, subscribe, options) {
168 this.status = data.status;
169 var sourceData = data.data,
170 targetData = this.data;
171 if (this.parent.root.strict != true) {
172 _setData(this, sourceData, targetData, subscribe, null, options);
173 return;
174 }
175
176 // strict 为true 时 ,定义dataTable的时候必须定义所有字段信息才能设置数据。
177 var meta = this.parent.meta;
178 for (var key in meta) {
179 var oldValue = newValue = null;
180 //子数据
181 if (meta[key]['type'] && meta[key]['type'] === 'child') {
182 targetData[key].isChild = true;
183 //ns 是多级数据时的空间名: 最顶层的dataTable没有ns。 f1.f2.f3
184 var ns = this.parent.ns === '' ? key : this.parent.ns + '.' + key;
185 var meta = this.parent.meta[key]['meta'];
186 targetData[key].value = new u.DataTable({ root: this.parent.root, ns: ns, meta: meta });
187 if (_typeof(sourceData[key]) === 'object') targetData[key].value.setSimpleData(sourceData[key]);
188 }
189 //存在多级关系
190 else if (key.indexOf('.') != -1) {
191 var keys = key.split('.');
192 var _fieldValue = sourceData;
193 var _targetField = targetData;
194 for (var i = 0; i < keys.length; i++) {
195 _fieldValue = _fieldValue || {};
196 _fieldValue = _fieldValue[keys[i]];
197 _targetField = _targetField[keys[i]];
198 }
199 oldValue = _targetField['value'];
200 _targetField['value'] = this.formatValue(key, _fieldValue);
201 newValue = _targetField['value'];
202 }
203 // 通过 setSimpleData 设置的数据
204 else if (sourceData[key] == null || _typeof(sourceData[key]) != 'object') {
205 oldValue = targetData[key]['value'];
206 targetData[key]['value'] = this.formatValue(key, sourceData[key]);
207 newValue = targetData[key]['value'];
208 } else {
209 var valueObj = sourceData[key];
210 if (valueObj.error) {
211 if (u.showMessageDialog) u.showMessageDialog({ title: "警告", msg: valueObj.error, backdrop: true });else alert(valueObj.error);
212 } else if (valueObj.value || valueObj.value === null || valueObj.meta) {
213 oldValue = targetData[key]['value'];
214 targetData[key]['value'] = this.formatValue(key, valueObj.value);
215 newValue = targetData[key]['value'];
216 for (var k in valueObj.meta) {
217 this.setMeta(key, k, valueObj.meta[k]);
218 }
219 }
220 }
221 if (subscribe === true && oldValue !== newValue) {
222 (0, _rowUtil._triggerChange)(this, key, oldValue);
223 }
224 }
225};
226
227var updateRow = function updateRow(row) {
228 this.setData(row);
229};
230
231exports.setValue = setValue;
232exports.setChildValue = setChildValue;
233exports.setChildSimpleDataByRowId = setChildSimpleDataByRowId;
234exports.setData = setData;
235exports.updateRow = updateRow;
\No newline at end of file