dtable-utils 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/index.js +1 -0
- package/es/cell-value-get/cell-value.js +165 -0
- package/es/cell-value-get/collaborator.js +33 -0
- package/es/cell-value-get/date.js +53 -0
- package/es/cell-value-get/digital-sign.js +10 -0
- package/es/cell-value-get/duration.js +86 -0
- package/es/cell-value-get/geolocation.js +74 -0
- package/es/cell-value-get/long-text.js +11 -0
- package/es/cell-value-get/number.js +222 -0
- package/es/cell-value-get/option.js +32 -0
- package/es/cell-value-set/number.js +53 -0
- package/es/column/common.js +41 -0
- package/es/column/date.js +17 -0
- package/es/column/number.js +31 -0
- package/es/common.js +16 -0
- package/es/constants/cell-type.js +33 -0
- package/es/constants/column.js +45 -0
- package/es/constants/filter/filter-column-options.js +65 -0
- package/es/constants/filter/filter-is-within.js +6 -0
- package/es/constants/filter/filter-modifier.js +29 -0
- package/es/constants/filter/filter-predicate.js +33 -0
- package/es/constants/filter/index.js +16 -0
- package/es/constants/formula.js +14 -0
- package/es/constants/select-option.js +129 -0
- package/es/date.js +226 -0
- package/es/helper/number-precision/index.js +64 -0
- package/es/index.js +26 -0
- package/es/validate/email.js +10 -0
- package/es/validate/filter.js +447 -0
- package/lib/cell-value-get/cell-value.js +170 -0
- package/lib/cell-value-get/collaborator.js +38 -0
- package/lib/cell-value-get/date.js +61 -0
- package/lib/cell-value-get/digital-sign.js +14 -0
- package/lib/cell-value-get/duration.js +90 -0
- package/lib/cell-value-get/geolocation.js +78 -0
- package/lib/cell-value-get/long-text.js +15 -0
- package/lib/cell-value-get/number.js +227 -0
- package/lib/cell-value-get/option.js +37 -0
- package/lib/cell-value-set/number.js +58 -0
- package/lib/column/common.js +46 -0
- package/lib/column/date.js +21 -0
- package/lib/column/number.js +36 -0
- package/lib/common.js +20 -0
- package/lib/constants/cell-type.js +37 -0
- package/lib/constants/column.js +63 -0
- package/lib/constants/filter/filter-column-options.js +73 -0
- package/lib/constants/filter/filter-is-within.js +11 -0
- package/lib/constants/filter/filter-modifier.js +38 -0
- package/lib/constants/filter/filter-predicate.js +42 -0
- package/lib/constants/filter/index.js +27 -0
- package/lib/constants/formula.js +23 -0
- package/lib/constants/select-option.js +134 -0
- package/lib/date.js +235 -0
- package/lib/helper/number-precision/index.js +69 -0
- package/lib/index.js +79 -0
- package/lib/validate/email.js +14 -0
- package/lib/validate/filter.js +458 -0
- package/package.json +44 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
|
+
import { CellType } from './cell-type.js';
|
|
3
|
+
|
|
4
|
+
var _FORMULA_COLUMN_TYPES;
|
|
5
|
+
var FORMULA_RESULT_TYPE = {
|
|
6
|
+
NUMBER: 'number',
|
|
7
|
+
STRING: 'string',
|
|
8
|
+
DATE: 'date',
|
|
9
|
+
BOOL: 'bool',
|
|
10
|
+
ARRAY: 'array'
|
|
11
|
+
};
|
|
12
|
+
var FORMULA_COLUMN_TYPES_MAP = (_FORMULA_COLUMN_TYPES = {}, _defineProperty(_FORMULA_COLUMN_TYPES, CellType.FORMULA, true), _defineProperty(_FORMULA_COLUMN_TYPES, CellType.LINK_FORMULA, true), _FORMULA_COLUMN_TYPES);
|
|
13
|
+
|
|
14
|
+
export { FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
var SELECT_OPTION_COLORS = [{
|
|
2
|
+
COLOR: '#FFFCB5',
|
|
3
|
+
BORDER_COLOR: '#E8E79D',
|
|
4
|
+
TEXT_COLOR: '#212529'
|
|
5
|
+
}, {
|
|
6
|
+
COLOR: '#FFEAB6',
|
|
7
|
+
BORDER_COLOR: '#ECD084',
|
|
8
|
+
TEXT_COLOR: '#212529'
|
|
9
|
+
}, {
|
|
10
|
+
COLOR: '#FFD9C8',
|
|
11
|
+
BORDER_COLOR: '#EFBAA3',
|
|
12
|
+
TEXT_COLOR: '#212529'
|
|
13
|
+
}, {
|
|
14
|
+
COLOR: '#FFDDE5',
|
|
15
|
+
BORDER_COLOR: '#EDC4C1',
|
|
16
|
+
TEXT_COLOR: '#212529'
|
|
17
|
+
}, {
|
|
18
|
+
COLOR: '#FFD4FF',
|
|
19
|
+
BORDER_COLOR: '#E6B6E6',
|
|
20
|
+
TEXT_COLOR: '#212529'
|
|
21
|
+
}, {
|
|
22
|
+
COLOR: '#DAD7FF',
|
|
23
|
+
BORDER_COLOR: '#C3BEEF',
|
|
24
|
+
TEXT_COLOR: '#212529'
|
|
25
|
+
}, {
|
|
26
|
+
COLOR: '#DDFFE6',
|
|
27
|
+
BORDER_COLOR: '#BBEBCD',
|
|
28
|
+
TEXT_COLOR: '#212529'
|
|
29
|
+
}, {
|
|
30
|
+
COLOR: '#DEF7C4',
|
|
31
|
+
BORDER_COLOR: '#C5EB9E',
|
|
32
|
+
TEXT_COLOR: '#212529'
|
|
33
|
+
}, {
|
|
34
|
+
COLOR: '#D8FAFF',
|
|
35
|
+
BORDER_COLOR: '#B4E4E9',
|
|
36
|
+
TEXT_COLOR: '#212529'
|
|
37
|
+
}, {
|
|
38
|
+
COLOR: '#D7E8FF',
|
|
39
|
+
BORDER_COLOR: '#BAD1E9',
|
|
40
|
+
TEXT_COLOR: '#212529'
|
|
41
|
+
}, {
|
|
42
|
+
COLOR: '#B7CEF9',
|
|
43
|
+
BORDER_COLOR: '#96B2E1',
|
|
44
|
+
TEXT_COLOR: '#212529'
|
|
45
|
+
}, {
|
|
46
|
+
COLOR: '#E9E9E9',
|
|
47
|
+
BORDER_COLOR: '#DADADA',
|
|
48
|
+
TEXT_COLOR: '#212529'
|
|
49
|
+
}, {
|
|
50
|
+
COLOR: '#FBD44A',
|
|
51
|
+
BORDER_COLOR: '#E5C142',
|
|
52
|
+
TEXT_COLOR: '#FFFFFF'
|
|
53
|
+
}, {
|
|
54
|
+
COLOR: '#EAA775',
|
|
55
|
+
BORDER_COLOR: '#D59361',
|
|
56
|
+
TEXT_COLOR: '#FFFFFF'
|
|
57
|
+
}, {
|
|
58
|
+
COLOR: '#F4667C',
|
|
59
|
+
BORDER_COLOR: '#DC556A',
|
|
60
|
+
TEXT_COLOR: '#FFFFFF'
|
|
61
|
+
}, {
|
|
62
|
+
COLOR: '#DC82D2',
|
|
63
|
+
BORDER_COLOR: '#D166C5',
|
|
64
|
+
TEXT_COLOR: '#FFFFFF'
|
|
65
|
+
}, {
|
|
66
|
+
COLOR: '#9860E5',
|
|
67
|
+
BORDER_COLOR: '#844BD2',
|
|
68
|
+
TEXT_COLOR: '#FFFFFF'
|
|
69
|
+
}, {
|
|
70
|
+
COLOR: '#9F8CF1',
|
|
71
|
+
BORDER_COLOR: '#8F75E2',
|
|
72
|
+
TEXT_COLOR: '#FFFFFF'
|
|
73
|
+
}, {
|
|
74
|
+
COLOR: '#59CB74',
|
|
75
|
+
BORDER_COLOR: '#4EB867',
|
|
76
|
+
TEXT_COLOR: '#FFFFFF'
|
|
77
|
+
}, {
|
|
78
|
+
COLOR: '#ADDF84',
|
|
79
|
+
BORDER_COLOR: '#9CCF72',
|
|
80
|
+
TEXT_COLOR: '#FFFFFF'
|
|
81
|
+
}, {
|
|
82
|
+
COLOR: '#89D2EA',
|
|
83
|
+
BORDER_COLOR: '#7BC0D6',
|
|
84
|
+
TEXT_COLOR: '#FFFFFF'
|
|
85
|
+
}, {
|
|
86
|
+
COLOR: '#4ECCCB',
|
|
87
|
+
BORDER_COLOR: '#45BAB9',
|
|
88
|
+
TEXT_COLOR: '#FFFFFF'
|
|
89
|
+
}, {
|
|
90
|
+
COLOR: '#46A1FD',
|
|
91
|
+
BORDER_COLOR: '#3C8FE4',
|
|
92
|
+
TEXT_COLOR: '#FFFFFF'
|
|
93
|
+
}, {
|
|
94
|
+
COLOR: '#C2C2C2',
|
|
95
|
+
BORDER_COLOR: '#ADADAD',
|
|
96
|
+
TEXT_COLOR: '#FFFFFF'
|
|
97
|
+
}];
|
|
98
|
+
var HIGHLIGHT_COLORS = {
|
|
99
|
+
'#FFE8E6': '#FF6052',
|
|
100
|
+
'#FFDED5': '#FF714A',
|
|
101
|
+
'#FFE7D1': '#FF851A',
|
|
102
|
+
'#EED5FF': '#B64DFD',
|
|
103
|
+
'#DAD7FF': '#5F4CFF',
|
|
104
|
+
'#D7E8FF': '#3C8FFF',
|
|
105
|
+
'#D8FAFF': '#41E7FF',
|
|
106
|
+
'#DDFFE6': '#16BA51',
|
|
107
|
+
'#E9E9E9': '#999999',
|
|
108
|
+
'#FBD44A': '#E5C142',
|
|
109
|
+
'#EAA775': '#D59361',
|
|
110
|
+
'#F4667C': '#DC556A',
|
|
111
|
+
'#DC82D2': '#D166C5',
|
|
112
|
+
'#9860E5': '#844BD2',
|
|
113
|
+
'#9F8CF1': '#8F75E2',
|
|
114
|
+
'#59CB74': '#4EB867',
|
|
115
|
+
'#ADDF84': '#9CCF72',
|
|
116
|
+
'#89D2EA': '#7BC0D6',
|
|
117
|
+
'#4ECCCB': '#45BAB9',
|
|
118
|
+
'#46A1FD': '#3C8FE4',
|
|
119
|
+
'#C2C2C2': '#ADADAD',
|
|
120
|
+
'#FFFCB5': '#E8E79D',
|
|
121
|
+
'#FFEAB6': '#ECD084',
|
|
122
|
+
'#FFD9C8': '#EFBAA3',
|
|
123
|
+
'#FFDDE5': '#EDC4C1',
|
|
124
|
+
'#FFD4FF': '#E6B6E6',
|
|
125
|
+
'#DEF7C4': '#C5EB9E',
|
|
126
|
+
'#B7CEF9': '#96B2E1'
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
export { HIGHLIGHT_COLORS, SELECT_OPTION_COLORS };
|
package/es/date.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
|
|
2
|
+
import _createClass from '@babel/runtime/helpers/createClass';
|
|
3
|
+
import { DEFAULT_DATE_FORMAT, DATE_UNIT } from './constants/column.js';
|
|
4
|
+
|
|
5
|
+
var MONTH_QUARTERS = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4];
|
|
6
|
+
var FORMATTING_TOKENS = /(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;
|
|
7
|
+
var MATCH_1_2 = /\d\d?/; // 0 - 99
|
|
8
|
+
var MATCH2 = /\d\d/; // 00 - 99
|
|
9
|
+
var MATCH4 = /\d{4}/; // 0000 - 9999
|
|
10
|
+
|
|
11
|
+
var MATCHER_EXPRESSIONS = {
|
|
12
|
+
mm: [MATCH_1_2, DATE_UNIT.MINUTES],
|
|
13
|
+
HH: [MATCH_1_2, DATE_UNIT.HOURS],
|
|
14
|
+
D: [MATCH_1_2, DATE_UNIT.DAY],
|
|
15
|
+
DD: [MATCH2, DATE_UNIT.DAY],
|
|
16
|
+
M: [MATCH_1_2, DATE_UNIT.MONTH],
|
|
17
|
+
MM: [MATCH2, DATE_UNIT.MONTH],
|
|
18
|
+
YYYY: [MATCH4, DATE_UNIT.YEAR]
|
|
19
|
+
};
|
|
20
|
+
var MATCHER_DATE_PARTS = ['YYYY', 'MM', 'M', 'DD', 'D'];
|
|
21
|
+
var DateUtils = /*#__PURE__*/function () {
|
|
22
|
+
function DateUtils() {
|
|
23
|
+
_classCallCheck(this, DateUtils);
|
|
24
|
+
}
|
|
25
|
+
_createClass(DateUtils, null, [{
|
|
26
|
+
key: "format",
|
|
27
|
+
value:
|
|
28
|
+
/**
|
|
29
|
+
* return the formatted date with target format.
|
|
30
|
+
* @param {string|date object} date
|
|
31
|
+
* @param {string} format
|
|
32
|
+
* @returns formatted date
|
|
33
|
+
*/
|
|
34
|
+
function format(date, _format) {
|
|
35
|
+
var dateObject = this.getValidDate(date);
|
|
36
|
+
if (!dateObject) {
|
|
37
|
+
return '';
|
|
38
|
+
}
|
|
39
|
+
var upperCaseFormat = _format && _format.toUpperCase();
|
|
40
|
+
var year = dateObject.getFullYear();
|
|
41
|
+
var month = dateObject.getMonth() + 1;
|
|
42
|
+
var day = dateObject.getDate();
|
|
43
|
+
var displayMonth = month < 10 ? "0".concat(month) : month;
|
|
44
|
+
var displayDay = day < 10 ? "0".concat(day) : day;
|
|
45
|
+
switch (upperCaseFormat) {
|
|
46
|
+
case 'YYYY-MM-DD HH:MM:SS':
|
|
47
|
+
{
|
|
48
|
+
var hours = dateObject.getHours();
|
|
49
|
+
var minutes = dateObject.getMinutes();
|
|
50
|
+
var seconds = dateObject.getSeconds();
|
|
51
|
+
var disPlayHours = hours < 10 ? "0".concat(hours) : hours;
|
|
52
|
+
var disPlayMinutes = minutes < 10 ? "0".concat(minutes) : minutes;
|
|
53
|
+
var disPlaySeconds = seconds < 10 ? "0".concat(seconds) : seconds;
|
|
54
|
+
return "".concat(year, "-").concat(displayMonth, "-").concat(displayDay, " ").concat(disPlayHours, ":").concat(disPlayMinutes, ":").concat(disPlaySeconds);
|
|
55
|
+
}
|
|
56
|
+
case 'YYYY-MM-DD HH:MM':
|
|
57
|
+
{
|
|
58
|
+
var _hours = dateObject.getHours();
|
|
59
|
+
var _minutes = dateObject.getMinutes();
|
|
60
|
+
var _disPlayHours = _hours < 10 ? "0".concat(_hours) : _hours;
|
|
61
|
+
var _disPlayMinutes = _minutes < 10 ? "0".concat(_minutes) : _minutes;
|
|
62
|
+
return "".concat(year, "-").concat(displayMonth, "-").concat(displayDay, " ").concat(_disPlayHours, ":").concat(_disPlayMinutes);
|
|
63
|
+
}
|
|
64
|
+
default:
|
|
65
|
+
{
|
|
66
|
+
return "".concat(year, "-").concat(displayMonth, "-").concat(displayDay);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* returns the formatted date with granularity.
|
|
73
|
+
* @param {string|date object} date
|
|
74
|
+
* @param {string} granularity
|
|
75
|
+
* @returns formatted date
|
|
76
|
+
*/
|
|
77
|
+
}, {
|
|
78
|
+
key: "getDateByGranularity",
|
|
79
|
+
value: function getDateByGranularity(date, granularity) {
|
|
80
|
+
var dateObject = this.getValidDate(date);
|
|
81
|
+
if (!dateObject) {
|
|
82
|
+
return '';
|
|
83
|
+
}
|
|
84
|
+
var upperCaseGranularity = granularity && granularity.toUpperCase();
|
|
85
|
+
var year = dateObject.getFullYear();
|
|
86
|
+
switch (upperCaseGranularity) {
|
|
87
|
+
case 'YEAR':
|
|
88
|
+
{
|
|
89
|
+
return "".concat(year);
|
|
90
|
+
}
|
|
91
|
+
case 'QUARTAR':
|
|
92
|
+
{
|
|
93
|
+
var month = dateObject.getMonth();
|
|
94
|
+
var quarter = MONTH_QUARTERS[month];
|
|
95
|
+
return "".concat(year, "-Q").concat(quarter);
|
|
96
|
+
}
|
|
97
|
+
case 'MONTH':
|
|
98
|
+
{
|
|
99
|
+
var _month = dateObject.getMonth() + 1;
|
|
100
|
+
var displayMonth = _month < 10 ? "0".concat(_month) : _month;
|
|
101
|
+
return "".concat(year, "-").concat(displayMonth);
|
|
102
|
+
}
|
|
103
|
+
case 'WEEK':
|
|
104
|
+
{
|
|
105
|
+
var weekNum = dateObject.getDay();
|
|
106
|
+
var startOfWeekDay = dateObject.getDate() + (weekNum === 0 ? -6 : 1 - weekNum);
|
|
107
|
+
var startOfWeekDate = new Date(year, dateObject.getMonth(), startOfWeekDay);
|
|
108
|
+
var _month2 = startOfWeekDate.getMonth() + 1;
|
|
109
|
+
var day = startOfWeekDate.getDate();
|
|
110
|
+
var _displayMonth = _month2 < 10 ? "0".concat(_month2) : _month2;
|
|
111
|
+
var displayDay = day < 10 ? "0".concat(day) : day;
|
|
112
|
+
return "".concat(startOfWeekDate.getFullYear(), "-").concat(_displayMonth, "-").concat(displayDay);
|
|
113
|
+
}
|
|
114
|
+
case 'DAY':
|
|
115
|
+
{
|
|
116
|
+
var _month3 = dateObject.getMonth() + 1;
|
|
117
|
+
var _day = dateObject.getDate();
|
|
118
|
+
var _displayMonth2 = _month3 < 10 ? "0".concat(_month3) : _month3;
|
|
119
|
+
var _displayDay = _day < 10 ? "0".concat(_day) : _day;
|
|
120
|
+
return "".concat(year, "-").concat(_displayMonth2, "-").concat(_displayDay);
|
|
121
|
+
}
|
|
122
|
+
default:
|
|
123
|
+
{
|
|
124
|
+
return '';
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
key: "isValidDateObject",
|
|
130
|
+
value: function isValidDateObject(dateObject) {
|
|
131
|
+
return dateObject instanceof Date && !isNaN(dateObject.getTime());
|
|
132
|
+
}
|
|
133
|
+
}, {
|
|
134
|
+
key: "getValidDate",
|
|
135
|
+
value: function getValidDate(date) {
|
|
136
|
+
if (!date) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
var isDateTypeString = typeof date === 'string';
|
|
140
|
+
var dateString = date;
|
|
141
|
+
var dateObject = date;
|
|
142
|
+
if (isDateTypeString) {
|
|
143
|
+
if (dateString.split(' ').length > 1 || dateString.includes('T')) {
|
|
144
|
+
dateObject = new Date(date);
|
|
145
|
+
} else {
|
|
146
|
+
// given date is without time precision
|
|
147
|
+
dateString = "".concat(date, " 00:00:00");
|
|
148
|
+
dateObject = new Date(dateString);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (this.isValidDateObject(dateObject)) return dateObject;
|
|
152
|
+
if (!isDateTypeString) return null;
|
|
153
|
+
|
|
154
|
+
// ios phone and safari browser not support use '2021-09-10 12:30', support '2021/09/10 12:30'
|
|
155
|
+
dateObject = new Date(dateString.replace(/-/g, '/'));
|
|
156
|
+
if (this.isValidDateObject(dateObject)) return dateObject;
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* @param {string} dateString
|
|
162
|
+
* @param {string} format
|
|
163
|
+
* @returns Date Object
|
|
164
|
+
*/
|
|
165
|
+
}, {
|
|
166
|
+
key: "parseDateWithFormat",
|
|
167
|
+
value: function parseDateWithFormat(dateString, format) {
|
|
168
|
+
try {
|
|
169
|
+
var parser = this.makeParser(format);
|
|
170
|
+
var _parser = parser(dateString),
|
|
171
|
+
year = _parser.year,
|
|
172
|
+
month = _parser.month,
|
|
173
|
+
day = _parser.day,
|
|
174
|
+
hours = _parser.hours,
|
|
175
|
+
minutes = _parser.minutes;
|
|
176
|
+
if (!year) {
|
|
177
|
+
var nowDate = new Date();
|
|
178
|
+
year = nowDate.getFullYear();
|
|
179
|
+
}
|
|
180
|
+
var dateObj = new Date("".concat(year, "-").concat(month, "-").concat(day, " ").concat(hours || '00', ":").concat(minutes || '00'));
|
|
181
|
+
if (!this.isValidDateObject(dateObj)) {
|
|
182
|
+
return this.getValidDate(dateString);
|
|
183
|
+
}
|
|
184
|
+
return dateObj;
|
|
185
|
+
} catch (err) {
|
|
186
|
+
return this.getValidDate(dateString);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}, {
|
|
190
|
+
key: "makeParser",
|
|
191
|
+
value: function makeParser(format) {
|
|
192
|
+
// 'YYYY-MM-DD HH:mm'.match(formattingTokens):
|
|
193
|
+
// ['YYYY', '-', 'MM', '-', 'DD', ' ', 'HH', ':', 'mm']
|
|
194
|
+
var tokens = (format || DEFAULT_DATE_FORMAT).match(FORMATTING_TOKENS);
|
|
195
|
+
var formatPartsLength = tokens.length;
|
|
196
|
+
return function (dateString) {
|
|
197
|
+
var dateParts = dateString.split(' ');
|
|
198
|
+
var datePart = dateParts[0] || '';
|
|
199
|
+
var timePart = dateParts[1] || '';
|
|
200
|
+
var time = {};
|
|
201
|
+
for (var i = 0; i < formatPartsLength; i++) {
|
|
202
|
+
var token = tokens[i];
|
|
203
|
+
var parseTo = MATCHER_EXPRESSIONS[token];
|
|
204
|
+
if (!parseTo) continue;
|
|
205
|
+
var regex = parseTo[0];
|
|
206
|
+
var parserType = parseTo[1];
|
|
207
|
+
if (!parserType) continue;
|
|
208
|
+
var isDatePart = MATCHER_DATE_PARTS.includes(token);
|
|
209
|
+
var match = isDatePart ? regex.exec(datePart) : regex.exec(timePart);
|
|
210
|
+
if (!match) continue;
|
|
211
|
+
var value = match[0];
|
|
212
|
+
time[parserType] = value;
|
|
213
|
+
if (isDatePart) {
|
|
214
|
+
datePart = datePart.replace(value, '');
|
|
215
|
+
} else {
|
|
216
|
+
timePart = timePart.replace(value, '');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return time;
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}]);
|
|
223
|
+
return DateUtils;
|
|
224
|
+
}();
|
|
225
|
+
|
|
226
|
+
export { DateUtils };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get digits length of a number
|
|
3
|
+
* @param {number} num Input number
|
|
4
|
+
*/
|
|
5
|
+
var digitLength = function digitLength(num) {
|
|
6
|
+
// Get digit length of e
|
|
7
|
+
var eSplit = num.toString().split(/[eE]/);
|
|
8
|
+
var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);
|
|
9
|
+
return len > 0 ? len : 0;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* fix wrong data
|
|
14
|
+
* e.g. strip(0.09999999999999998) = 0.1
|
|
15
|
+
*/
|
|
16
|
+
var strip = function strip(num) {
|
|
17
|
+
var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 15;
|
|
18
|
+
return +parseFloat(Number(num).toPrecision(precision));
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* convert decimal to integer.
|
|
23
|
+
* Support scientific notation. If it is a decimal, it will be enlarged to an integer
|
|
24
|
+
* @param {number|string} num
|
|
25
|
+
*/
|
|
26
|
+
var float2Fixed = function float2Fixed(num) {
|
|
27
|
+
if (num.toString().indexOf('e') === -1) {
|
|
28
|
+
return Number(num.toString().replace('.', ''));
|
|
29
|
+
}
|
|
30
|
+
var dLen = digitLength(num);
|
|
31
|
+
return dLen > 0 ? strip(Number(num) * Math.pow(10, dLen)) : Number(num);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* exact multiplication
|
|
36
|
+
*/
|
|
37
|
+
var times = function times(numLeft, numRight) {
|
|
38
|
+
var num1Changed = float2Fixed(numLeft);
|
|
39
|
+
var num2Changed = float2Fixed(numRight);
|
|
40
|
+
var baseNum = digitLength(numLeft) + digitLength(numRight);
|
|
41
|
+
var leftValue = num1Changed * num2Changed;
|
|
42
|
+
return leftValue / Math.pow(10, baseNum);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* exact subtraction
|
|
47
|
+
*/
|
|
48
|
+
var minus = function minus(numLeft, numRight) {
|
|
49
|
+
var baseNum = Math.pow(10, Math.max(digitLength(numLeft), digitLength(numRight)));
|
|
50
|
+
return (times(numLeft, baseNum) - times(numRight, baseNum)) / baseNum;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* exact division
|
|
55
|
+
*/
|
|
56
|
+
var divide = function divide(numLeft, numRight) {
|
|
57
|
+
var num1Changed = float2Fixed(numLeft);
|
|
58
|
+
var num2Changed = float2Fixed(numRight);
|
|
59
|
+
|
|
60
|
+
// fix: e.g. 10 ** -4 = 0.00009999999999999999,use 'strip' to fix
|
|
61
|
+
return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(numRight) - digitLength(numLeft))));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export { divide as NPdivide, minus as NPminus };
|
package/es/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export { CellType } from './constants/cell-type.js';
|
|
2
|
+
export { COLLABORATOR_COLUMN_TYPES, COLUMNS_ICON_CONFIG, DATE_COLUMN_OPTIONS, DEFAULT_DATE_FORMAT, DEFAULT_NUMBER_FORMAT, DURATION_DECIMAL_DIGITS, DURATION_FORMATS, DURATION_FORMATS_MAP, DURATION_ZERO_DISPLAY, NUMERIC_COLUMNS_TYPES } from './constants/column.js';
|
|
3
|
+
export { FILTER_ERR_MSG } from './constants/filter/index.js';
|
|
4
|
+
export { FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE } from './constants/formula.js';
|
|
5
|
+
export { HIGHLIGHT_COLORS, SELECT_OPTION_COLORS } from './constants/select-option.js';
|
|
6
|
+
export { generatorBase64Code } from './common.js';
|
|
7
|
+
export { getDateDisplayString } from './cell-value-get/date.js';
|
|
8
|
+
export { getDurationDisplayString } from './cell-value-get/duration.js';
|
|
9
|
+
export { getNumberDisplayString, replaceNumberNotAllowInput } from './cell-value-get/number.js';
|
|
10
|
+
export { getMultipleOptionName, getOptionName } from './cell-value-get/option.js';
|
|
11
|
+
export { getCollaboratorsName, getCollaboratorsNames } from './cell-value-get/collaborator.js';
|
|
12
|
+
export { getGeolocationDisplayString } from './cell-value-get/geolocation.js';
|
|
13
|
+
export { getDigitalSignImageUrl } from './cell-value-get/digital-sign.js';
|
|
14
|
+
export { getLongtextDisplayString } from './cell-value-get/long-text.js';
|
|
15
|
+
export { getCellValueDisplayString, getFormulaDisplayString } from './cell-value-get/cell-value.js';
|
|
16
|
+
export { formatStringToNumber, getFloatNumber } from './cell-value-set/number.js';
|
|
17
|
+
export { getColumnOptions } from './column/common.js';
|
|
18
|
+
export { isDateColumn } from './column/date.js';
|
|
19
|
+
export { isNumberColumn, isNumericColumn } from './column/number.js';
|
|
20
|
+
export { DateUtils } from './date.js';
|
|
21
|
+
export { ValidateFilter } from './validate/filter.js';
|
|
22
|
+
export { isValidEmail } from './validate/email.js';
|
|
23
|
+
export { FILTER_COLUMN_OPTIONS } from './constants/filter/filter-column-options.js';
|
|
24
|
+
export { FILTER_TERM_MODIFIER_SHOW, FILTER_TERM_MODIFIER_TYPE } from './constants/filter/filter-modifier.js';
|
|
25
|
+
export { FILTER_PREDICATE_SHOW, FILTER_PREDICATE_TYPE } from './constants/filter/filter-predicate.js';
|
|
26
|
+
export { filterTermModifierIsWithin, filterTermModifierNotWithin } from './constants/filter/filter-is-within.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check email format is valid.
|
|
3
|
+
* @param {string} email
|
|
4
|
+
* @returns true/false, bool
|
|
5
|
+
*/
|
|
6
|
+
var isValidEmail = function isValidEmail(email) {
|
|
7
|
+
return /^[A-Za-z0-9]+([-_.][A-Za-z0-9]+)*@([A-Za-z0-9]+[-.])+[A-Za-z0-9]{2,20}$/.test(email);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export { isValidEmail };
|