UNPKG

kero

Version:
202 lines (189 loc) 9.78 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateRow = exports.setData = exports.setChildSimpleDataByRowId = exports.setChildValue = exports.setValue = undefined; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; /** * Module : kero dataTable row getData * Author : liuyk(liuyk@yonyou.com) * Date : 2016-08-08 13:54:01 */ var _util = require('./util'); var _util2 = require('neoui-sparrow/js/util'); /** *设置row中某一列的值 */ var setValue = function setValue(fieldName, value, ctx, options) { if (arguments.length === 1) { value = fieldName; fieldName = '$data'; } var oldValue = this.getValue(fieldName); if (typeof oldValue == 'undefined' || oldValue === null) oldValue = ''; if ((0, _util.eq)(oldValue, value)) return; (0, _util._getField)(fieldName)['value'] = value; (0, _util._triggerChange)(fieldName, oldValue, ctx); }; var setChildValue = function setChildValue(fieldName, value) { var nameArr = fieldName.split('.'); var _name = nameArr[0]; var _field = this.data[_name]; //_field保存当前_name对应的数据 for (var i = 0, count = nameArr.length; i < count; i++) { //最后一级 if (i == count - 1) { if (_field['value'] instanceof u.DataTable) { //暂不处理 } else { this.setValue(fieldName, value); } } else { if (_field && _field['value'] instanceof u.DataTable) { var row = _field['value'].getCurrentRow(); if (row) row.setChildValue(fieldName.replace(_name + '.', ''), value); } else { _name = nameArr[i + 1]; _field = _field[_name]; //多层嵌套时_field取子项对应的数据 } } } }; var setChildSimpleDataByRowId = function setChildSimpleDataByRowId(rowId, data) { var rowIdArr = rowId.split('.'); var rowIdLength = rowIdArr.length; if (rowIdLength > 1) { var _childField = rowIdArr[0]; //子表字段 var _childObj = this.data[_childField]; // 子表字段存放的obj if (_childObj && _childObj['value'] instanceof u.DataTable) { var rowId = rowIdArr[1]; var row = null; if (rowId) row = _childObj['value'].getRowByRowId(rowId); if (row) { if (rowIdArr.length == 2) { row.setSimpleData(data); } else { row.setChildSimpleDataByRowId(fieldName.replace(_childField + '.' + rowId + '.', ''), data); } } } } }; /** * [_setData description] * @param {[type]} sourceData * @param {[type]} targetData * @param {[type]} subscribe * @param {[type]} parentKey [父项key,数据项为数组时获取meta值用] */ var _setData = function _setData(sourceData, targetData, subscribe, parentKey) { for (var key in sourceData) { var _parentKey = parentKey || null; //if (targetData[key]) { targetData[key] = targetData[key] || {}; var valueObj = sourceData[key]; if ((typeof valueObj === 'undefined' ? 'undefined' : _typeof(valueObj)) != 'object') this.parent.createField(key); //if (typeof this.parent.meta[key] === 'undefined') continue; if (valueObj == null || (typeof valueObj === 'undefined' ? 'undefined' : _typeof(valueObj)) != 'object') { targetData[key]['value'] = this.formatValue(key, valueObj); if (subscribe === true && oldValue !== targetData[key]['value']) { (0, _util._triggerChange)(key, oldValue); } } else { if (valueObj.error) { if (u.showMessageDialog) u.showMessageDialog({ title: "警告", msg: valueObj.error, backdrop: true });else alert(valueObj.error); } else if (valueObj.value || valueObj.value === null || valueObj.meta || valueObj.value === '' || valueObj.value === '0' || valueObj.value === 0) { var oldValue = targetData[key]['value']; targetData[key]['value'] = this.formatValue(key, valueObj.value); if (subscribe === true && oldValue !== targetData[key]['value']) { (0, _util._triggerChange)(key, oldValue); } for (var k in valueObj.meta) { this.setMeta(key, k, valueObj.meta[k]); } } else if ((0, _util2.isArray)(valueObj)) { targetData[key].isChild = true; //ns 是多级数据时的空间名: 最顶层的dataTable没有ns。 f1.f2.f3 var _key = _parentKey == null ? key : _parentKey + '.' + key; var ns = this.parent.ns === '' ? key : this.parent.ns + '.' + _key; if (this.parent.meta[_key]) { var meta = this.parent.meta[_key]['meta']; targetData[key].value = new u.DataTable({ root: this.parent.root, ns: ns, meta: meta }); targetData[key].value.setSimpleData(valueObj); } } else { _parentKey = _parentKey == null ? key : _parentKey + '.' + key; this._setData(valueObj, targetData[key], null, _parentKey); } } //} } }; /** *设置Row数据 *@subscribe 是否触发监听 */ var setData = function setData(data, subscribe) { this.status = data.status; var sourceData = data.data, targetData = this.data; if (this.parent.root.strict != true) { this._setData(sourceData, targetData, subscribe); return; } // strict 为true 时 ,定义dataTable的时候必须定义所有字段信息才能设置数据。 var meta = this.parent.meta; for (var key in meta) { var oldValue = newValue = null; //子数据 if (meta[key]['type'] && meta[key]['type'] === 'child') { targetData[key].isChild = true; //ns 是多级数据时的空间名: 最顶层的dataTable没有ns。 f1.f2.f3 var ns = this.parent.ns === '' ? key : this.parent.ns + '.' + key; var meta = this.parent.meta[key]['meta']; targetData[key].value = new u.DataTable({ root: this.parent.root, ns: ns, meta: meta }); if (_typeof(sourceData[key]) === 'object') targetData[key].value.setSimpleData(sourceData[key]); } //存在多级关系 else if (key.indexOf('.') != -1) { var keys = key.split('.'); var _fieldValue = sourceData; var _targetField = targetData; for (var i = 0; i < keys.length; i++) { _fieldValue = _fieldValue || {}; _fieldValue = _fieldValue[keys[i]]; _targetField = _targetField[keys[i]]; } oldValue = _targetField['value']; _targetField['value'] = this.formatValue(key, _fieldValue); newValue = _targetField['value']; } // 通过 setSimpleData 设置的数据 else if (sourceData[key] == null || _typeof(sourceData[key]) != 'object') { oldValue = targetData[key]['value']; targetData[key]['value'] = this.formatValue(key, sourceData[key]); newValue = targetData[key]['value']; } else { var valueObj = sourceData[key]; if (valueObj.error) { if (u.showMessageDialog) u.showMessageDialog({ title: "警告", msg: valueObj.error, backdrop: true });else alert(valueObj.error); } else if (valueObj.value || valueObj.value === null || valueObj.meta) { oldValue = targetData[key]['value']; targetData[key]['value'] = this.formatValue(key, valueObj.value); newValue = targetData[key]['value']; for (var k in valueObj.meta) { this.setMeta(key, k, valueObj.meta[k]); } } } if (subscribe === true && oldValue !== newValue) { (0, _util._triggerChange)(key, oldValue); } } }; var updateRow = function updateRow(row) { this.setData(row); }; exports.setValue = setValue; exports.setChildValue = setChildValue; exports.setChildSimpleDataByRowId = setChildSimpleDataByRowId; exports.setData = setData; exports.updateRow = updateRow;