1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | import {
|
7 | isNumber
|
8 | } from 'tinper-sparrow/src/util';
|
9 |
|
10 |
|
11 | const eq = function(a, b) {
|
12 | if ((a === null || a === undefined || a === '') && (b === null || b === undefined || b === '')) return true;
|
13 |
|
14 |
|
15 | if (a + '' === b + '' || a === b) return true;
|
16 | if (isNumber(a) && isNumber(b) && parseFloat(a) - parseFloat(b) < 0.0000005 && parseFloat(a) - parseFloat(b) > -0.0000005) return true;
|
17 | return false;
|
18 | }
|
19 |
|
20 |
|
21 |
|
22 | const _formatDate = function(value) {
|
23 | if (!value) return value
|
24 | var date = new Date();
|
25 | date.setTime(value);
|
26 |
|
27 | if (isNaN(date)) {
|
28 | return value
|
29 | }
|
30 | var year = date.getFullYear();
|
31 | var month = date.getMonth() + 1;
|
32 | if (parseInt(month) < 10) month = "0" + month;
|
33 | var day = date.getDate();
|
34 | if (parseInt(day) < 10) day = "0" + day;
|
35 | var hours = date.getHours();
|
36 | if (parseInt(hours) < 10) hours = "0" + hours;
|
37 | var minutes = date.getMinutes();
|
38 | if (parseInt(minutes) < 10) minutes = "0" + minutes;
|
39 | var seconds = date.getSeconds();
|
40 | if (parseInt(seconds) < 10) seconds = "0" + seconds;
|
41 | var mill = date.getMilliseconds();
|
42 | var formatString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
|
43 | return formatString;
|
44 | }
|
45 |
|
46 |
|
47 | const _dateToUTCString = function(date) {
|
48 | if (!date && date != 0) return ''
|
49 | if (typeof date === 'number')
|
50 | return date
|
51 | if (date.indexOf("-") > -1)
|
52 | date = date.replace(/\-/g, "/");
|
53 | var utcString = Date.parse(date);
|
54 | if (isNaN(utcString)) return "";
|
55 | return utcString;
|
56 | }
|
57 |
|
58 |
|
59 | const _triggerChange = function(rowObj, fieldName, oldValue, ctx) {
|
60 | _getField(rowObj, fieldName).changed = true
|
61 | if (rowObj.status != Row.STATUS.NEW)
|
62 | rowObj.setStatus(Row.STATUS.UPDATE)
|
63 | if (rowObj.valueChange[fieldName])
|
64 | rowObj.valueChange[fieldName](-rowObj.valueChange[fieldName]())
|
65 | if (rowObj.parent.getCurrentRow() == rowObj && rowObj.parent.valueChange[fieldName]) {
|
66 | rowObj.parent.valueChange[fieldName](-rowObj.parent.valueChange[fieldName]());
|
67 | }
|
68 | if (rowObj.parent.ns) {
|
69 | var fName = rowObj.parent.ns + '.' + fieldName;
|
70 | if (rowObj.parent.root.valueChange[fName])
|
71 | rowObj.parent.root.valueChange[fName](-rowObj.parent.root.valueChange[fName]());
|
72 | }
|
73 |
|
74 | var event = {
|
75 | eventType: 'dataTableEvent',
|
76 | dataTable: rowObj.parent.id,
|
77 | rowId: rowObj.rowId,
|
78 | field: fieldName,
|
79 | oldValue: oldValue,
|
80 | newValue: rowObj.getValue(fieldName),
|
81 | ctx: ctx || "",
|
82 | rowObj: rowObj
|
83 | }
|
84 | rowObj.parent.trigger(DataTable.ON_VALUE_CHANGE, event);
|
85 | rowObj.parent.trigger(fieldName + "." + DataTable.ON_VALUE_CHANGE, event);
|
86 | if (rowObj == rowObj.parent.getCurrentRow())
|
87 | rowObj.parent.trigger(fieldName + "." + DataTable.ON_CURRENT_VALUE_CHANGE, event);
|
88 |
|
89 |
|
90 | if (rowObj.parent.ns) {
|
91 | event.fullField = fName;
|
92 | event.ns = rowObj.parent.ns;
|
93 | rowObj.parent.root.trigger(DataTable.ON_VALUE_CHANGE, event);
|
94 | rowObj.parent.root.trigger(fName + "." + DataTable.ON_VALUE_CHANGE, event);
|
95 | }
|
96 |
|
97 | };
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 |
|
104 |
|
105 | const formatValue = function(field, value) {
|
106 | var type = this.parent.getMeta(field, 'type')
|
107 | if (!type) return value
|
108 | if (type == 'date' || type == 'datetime') {
|
109 | return _formatDate(value)
|
110 | }
|
111 | return value
|
112 | }
|
113 |
|
114 |
|
115 |
|
116 | const _findField = function(rowObj, fieldName) {
|
117 | var rat = rowObj.data[fieldName];
|
118 | if (!rat) {
|
119 | var fnames = fieldName.split('.');
|
120 | if (fnames.length > 1) {
|
121 | var tempField = rowObj.data;
|
122 | for (var i = 0; i < fnames.length; i++) {
|
123 | tempField = tempField[fnames[i]];
|
124 | if (tempField.value instanceof DataTable) {
|
125 | var row = tempField.value.getCurrentRow();
|
126 | if (!row) {
|
127 | row = tempField.value.rows()[0]
|
128 | }
|
129 | if (row)
|
130 | tempField = row.data;
|
131 | }
|
132 | if (!tempField) {
|
133 | break;
|
134 | }
|
135 | }
|
136 | rat = tempField;
|
137 | }
|
138 | }
|
139 | return rat || null;
|
140 |
|
141 | }
|
142 |
|
143 | const _getField = function(rowObj, fieldName) {
|
144 | var rat = _findField(rowObj, fieldName);
|
145 | if (!rat) {
|
146 | var msg = 'field:' + fieldName + ' not exist in dataTable:' + rowObj.parent.root.id + '!'
|
147 | throw new Error(msg);
|
148 | }
|
149 | return rat;
|
150 | }
|
151 |
|
152 |
|
153 | export const rowUtilFunObj = {
|
154 | formatValue: formatValue,
|
155 | eq: eq,
|
156 | _triggerChange: _triggerChange,
|
157 | _getField: _getField,
|
158 | _dateToUTCString: _dateToUTCString,
|
159 | }
|