UNPKG

4.87 kBJavaScriptView Raw
1/**
2 * Module : kero dataTable row util
3 * Author : liuyk(liuyk@yonyou.com)
4 * Date : 2016-08-08 13:54:01
5 */
6import {isNumber} from 'tinper-sparrow/src/util';
7
8const eq = function (a, b) {
9 if ((a === null || a === undefined || a === '') && (b === null || b === undefined || b === '')) return true;
10 //判断输入的值是否相等,a,b是字符串直接比较这两个值即可,没必要判断是否是数据,判断是否是数据使用parseFloat转换有时精度不准(431027199110.078573)
11 //if (isNumber(a) && isNumber(b) && parseFloat(a) == parseFloat(b)) return true;
12 if (a + '' == b + '') return true;
13 return false;
14}
15
16
17const _formatDate = function (value) {
18 if (!value) return value
19 var date = new Date();
20 date.setTime(value);
21 //如果不能转为Date 直接返回原值
22 if (isNaN(date)){
23 return value
24 }
25 var year = date.getFullYear();
26 var month = date.getMonth() + 1;
27 if (parseInt(month) < 10) month = "0" + month;
28 var day = date.getDate();
29 if (parseInt(day) < 10) day = "0" + day;
30 var hours = date.getHours();
31 if (parseInt(hours) < 10) hours = "0" + hours;
32 var minutes = date.getMinutes();
33 if (parseInt(minutes) < 10) minutes = "0" + minutes;
34 var seconds = date.getSeconds();
35 if (parseInt(seconds) < 10) seconds = "0" + seconds;
36 var mill = date.getMilliseconds();
37 var formatString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds ; //+ "." + mill;
38 return formatString;
39}
40
41const _dateToUTCString = function (date) {
42 if (!date) return ''
43 if(typeof date==='number')
44 return date
45 if (date.indexOf("-") > -1)
46 date = date.replace(/\-/g, "/");
47 var utcString = Date.parse(date);
48 if (isNaN(utcString)) return "";
49 return utcString;
50}
51
52const _triggerChange = function(rowObj,fieldName, oldValue, ctx){
53 _getField(rowObj, fieldName).changed = true
54 if (rowObj.status != Row.STATUS.NEW)
55 rowObj.status = Row.STATUS.UPDATE
56 if (rowObj.valueChange[fieldName])
57 rowObj.valueChange[fieldName](-rowObj.valueChange[fieldName]())
58 if (rowObj.parent.getCurrentRow() == rowObj && rowObj.parent.valueChange[fieldName]){
59 rowObj.parent.valueChange[fieldName](-rowObj.parent.valueChange[fieldName]());
60 }
61 if (rowObj.parent.ns){
62 var fName = rowObj.parent.ns + '.' + fieldName;
63 if (rowObj.parent.root.valueChange[fName])
64 rowObj.parent.root.valueChange[fName](-rowObj.parent.root.valueChange[fName]());
65 }
66
67 var event = {
68 eventType: 'dataTableEvent',
69 dataTable: rowObj.parent.id,
70 rowId: rowObj.rowId,
71 field: fieldName,
72 oldValue: oldValue,
73 newValue: rowObj.getValue(fieldName),
74 ctx: ctx || "",
75 rowObj: rowObj
76 }
77 rowObj.parent.trigger(DataTable.ON_VALUE_CHANGE, event);
78 rowObj.parent.trigger(fieldName + "." + DataTable.ON_VALUE_CHANGE, event);
79 if (rowObj == rowObj.parent.getCurrentRow())
80 rowObj.parent.trigger(fieldName + "." + DataTable.ON_CURRENT_VALUE_CHANGE, event);
81
82 // 对于多级字表需要触发顶层div的valuechange事件
83 if (rowObj.parent.ns){
84 event.fullField = fName;
85 event.ns = rowObj.parent.ns;
86 rowObj.parent.root.trigger(DataTable.ON_VALUE_CHANGE, event);
87 rowObj.parent.root.trigger(fName + "." + DataTable.ON_VALUE_CHANGE, event);
88 }
89
90};
91
92/**
93 * 格式化数据值
94 * @private
95 * @param {Object} field
96 * @param {Object} value
97 */
98const formatValue = function (field, value) {
99 var type = this.parent.getMeta(field, 'type')
100 if (!type) return value
101 if (type == 'date' || type == 'datetime') {
102 return _formatDate(value)
103 }
104 return value
105}
106
107
108const _findField = function(rowObj, fieldName){
109 var rat = rowObj.data[fieldName];
110 if (!rat) {
111 var fnames = fieldName.split('.'); //多级field
112 if (fnames.length > 1){
113 var tempField = rowObj.data;
114 for (var i = 0; i < fnames.length; i++){
115 tempField = tempField[fnames[i]];
116 if(tempField.value instanceof DataTable){
117 var row = tempField.value.getCurrentRow();
118 if(row){
119 tempField = row.data;
120 }
121 }
122 if (!tempField){
123 break;
124 }
125 }
126 rat = tempField;
127 }
128 }
129 return rat || null;
130
131}
132
133const _getField = function (rowObj, fieldName) {
134 var rat = _findField(rowObj, fieldName);
135 if (!rat) {
136 var msg = 'field:' + fieldName + ' not exist in dataTable:' + rowObj.parent.root.id + '!'
137 throw new Error(msg);
138 }
139 return rat;
140}
141
142
143export {
144 eq,
145 _dateToUTCString,
146 _triggerChange,
147 formatValue, //需要最终产出
148 _getField,
149 _findField
150}