UNPKG

2.84 kBJavaScriptView Raw
1/**
2 * Module : kero dataTable row getSimpleData
3 * Author : liuyk(liuyk@yonyou.com)
4 * Date : 2016-08-08 13:54:01
5 */
6import {
7 rowUtilFunObj
8} from './row-util';
9import {
10 isEmptyObject
11} from 'tinper-sparrow/src/util';
12
13// 获取数据的核心方法
14const _getSimpleData = function(rowObj, data) {
15 var _data = {};
16 var meta = rowObj.parent.getMeta() || {};
17 for (var key in data) {
18 if (key === 'meta' || isEmptyObject(data[key])) {
19 continue;
20 } else if (data[key].isChild) {
21 _data[key] = data[key].value ? data[key].value.getSimpleData() : {};
22 } else if (key === '$data') { //处理一维数组: [1,2,3]
23 _data = data[key].value
24 } else if (typeof data[key].value !== 'undefined') {
25 //如果类型为boolean,无论值为false、true都应该等于他本身
26 if (meta[key] && meta[key].type === 'boolean') {
27 _data[key] = data[key].value ? true : false; //默认值可能是null
28 } else {
29 _data[key] = data[key].value;
30 }
31 if (meta[key] && meta[key].type) {
32 var obj = {
33 meta: meta,
34 data: data,
35 key: key
36 }
37 _data[key] = rowObj.formatValueFun(obj, rowObj.parent.dateNoConvert);
38
39 }
40 } else if (!data[key].value) {
41 _data[key] = data[key].value;
42 } else {
43 _data[key] = _getSimpleData(rowObj, data[key])
44 }
45 }
46 return _data;
47
48}
49
50// 对于日期获取值时进行转换
51const formatValueFun = function(obj, isDateNoConvert) {
52 var meta = obj.meta,
53 data = obj.data,
54 key = obj.key;
55 if (!isDateNoConvert && (meta[key].type == 'date' || meta[key].type == 'datetime')) {
56 return rowUtilFunObj._dateToUTCString(data[key].value)
57 }
58 return data[key].value;
59}
60
61/**
62 * 获取数据信息
63 * @memberof Row
64 * @param {object} [options] 获取数据信息时的配置参数
65 * @param {array} [options.fields] 获取数据信息时是否制定字段值
66 * @return {object} 数据信息
67 * @example
68 * row.getSimpleData()
69 * row.getSimpleData({fields:['field1','field2']})
70 */
71const getSimpleData = function(options) {
72 options = options || {}
73 var fields = options['fields'] || null;
74 var meta = this.parent.getMeta();
75 var data = this.data;
76 var _data = _getSimpleData(this, data); //{};
77 var _fieldsData = {};
78 if (fields) {
79 for (var key in _data) {
80 if (fields.indexOf(key) != -1) {
81 _fieldsData[key] = _data[key];
82 }
83 }
84 return _fieldsData;
85 }
86 return _data;
87
88};
89
90export const rowGetSimpleDataFunObj = {
91 formatValueFun: formatValueFun,
92 getSimpleData: getSimpleData
93}