nmce-func 0.0.3 → 0.0.7
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/_func/addressFunc.d.ts +31 -0
- package/_func/authentication.service.d.ts +24 -0
- package/_func/currencyFunc.d.ts +20 -0
- package/_func/dateFunc.d.ts +121 -0
- package/_func/htmlPrintFunc.d.ts +18 -0
- package/_func/index.d.ts +10 -0
- package/_func/javascriptFunc.d.ts +9 -0
- package/_func/jsonFunc.d.ts +31 -0
- package/_func/stringAusFunc.d.ts +40 -0
- package/_func/stringFunc.d.ts +41 -0
- package/_func/uuidFunc.d.ts +7 -0
- package/bundles/nmce-func.umd.js +1294 -0
- package/bundles/nmce-func.umd.js.map +1 -0
- package/bundles/nmce-func.umd.min.js +2 -0
- package/bundles/nmce-func.umd.min.js.map +1 -0
- package/esm2015/_func/addressFunc.js +49 -0
- package/esm2015/_func/authentication.service.js +41 -0
- package/esm2015/_func/currencyFunc.js +72 -0
- package/esm2015/_func/dateFunc.js +316 -0
- package/esm2015/_func/htmlPrintFunc.js +45 -0
- package/esm2015/_func/index.js +11 -0
- package/esm2015/_func/javascriptFunc.js +17 -0
- package/esm2015/_func/jsonFunc.js +67 -0
- package/esm2015/_func/stringAusFunc.js +200 -0
- package/esm2015/_func/stringFunc.js +93 -0
- package/esm2015/_func/uuidFunc.js +17 -0
- package/esm2015/nmce-func.js +5 -0
- package/esm2015/public-api.js +5 -0
- package/fesm2015/nmce-func.js +927 -0
- package/fesm2015/nmce-func.js.map +1 -0
- package/nmce-func.d.ts +4 -0
- package/nmce-func.metadata.json +1 -0
- package/package.json +18 -4
- package/public-api.d.ts +1 -0
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -11
- package/src/_func/addressFunc.spec.ts +0 -12
- package/src/_func/addressFunc.ts +0 -54
- package/src/_func/authentication.service.ts +0 -47
- package/src/_func/currencyFunc.ts +0 -71
- package/src/_func/dateFunc.spec.ts +0 -191
- package/src/_func/dateFunc.ts +0 -385
- package/src/_func/helperFunc.ts +0 -27
- package/src/_func/htmlFunc.ts +0 -46
- package/src/_func/index.ts +0 -9
- package/src/_func/jsFunc.ts +0 -48
- package/src/_func/stringFunc.spec.ts +0 -142
- package/src/_func/stringFunc.ts +0 -337
- package/src/public-api.ts +0 -5
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -25
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
|
@@ -0,0 +1,1294 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common/http'), require('@angular/core'), require('rxjs/operators'), require('moment'), require('uuid')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('nmce-func', ['exports', '@angular/common/http', '@angular/core', 'rxjs/operators', 'moment', 'uuid'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['nmce-func'] = {}, global.ng.common.http, global.ng.core, global.rxjs.operators, global.moment, global.uuid));
|
|
5
|
+
}(this, (function (exports, http, core, operators, moment, uuid) { 'use strict';
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
|
|
10
|
+
|
|
11
|
+
var AddressFunc = /** @class */ (function () {
|
|
12
|
+
function AddressFunc() {
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Compose to one line separated by comma
|
|
16
|
+
* @param st1
|
|
17
|
+
* @param st2
|
|
18
|
+
* @param city
|
|
19
|
+
* @param state
|
|
20
|
+
* @param postcode
|
|
21
|
+
*/
|
|
22
|
+
AddressFunc.composeOneLineAddress = function (st1, st2, city, state, postcode) {
|
|
23
|
+
return AddressFunc.composeAddress(st1, st2, city, state, postcode, ', ');
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Compose to multiple separated by \n
|
|
27
|
+
* @param st1
|
|
28
|
+
* @param st2
|
|
29
|
+
* @param city
|
|
30
|
+
* @param state
|
|
31
|
+
* @param postcode
|
|
32
|
+
*/
|
|
33
|
+
AddressFunc.composeMultiLineAddress = function (st1, st2, city, state, postcode) {
|
|
34
|
+
return AddressFunc.composeAddress(st1, st2, city, state, postcode, '\n');
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Compose with separator
|
|
38
|
+
* @param st1
|
|
39
|
+
* @param st2
|
|
40
|
+
* @param city
|
|
41
|
+
* @param state
|
|
42
|
+
* @param postcode
|
|
43
|
+
* @param sep
|
|
44
|
+
*/
|
|
45
|
+
AddressFunc.composeAddress = function (st1, st2, city, state, postcode, sep) {
|
|
46
|
+
var r = (st1 ? (st1 + sep) : '') + (st2 ? (st2 + sep) : '') + (city ? (city + sep) : '') + (state ? (state + ' ') : '') + (postcode ? postcode : '');
|
|
47
|
+
return r;
|
|
48
|
+
};
|
|
49
|
+
AddressFunc.composeGoogleMapsAuUrl = function (st1, st2, city, state, country) {
|
|
50
|
+
var googleBaseUrl = 'https://www.google.com.au/maps?hl=en&q=';
|
|
51
|
+
var fff = function (s) {
|
|
52
|
+
if (!s) {
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
return '+' + encodeURIComponent(s.replace(' ', '+')) + ',';
|
|
56
|
+
};
|
|
57
|
+
var ss = fff(st1) + fff(st2) + fff(city) + fff(state) + fff(country);
|
|
58
|
+
return googleBaseUrl + ss;
|
|
59
|
+
};
|
|
60
|
+
return AddressFunc;
|
|
61
|
+
}());
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Login and saving tokens in sessionStorage.
|
|
65
|
+
* App needs to provide constant 'auth.tokenUrl'.
|
|
66
|
+
*/
|
|
67
|
+
var AuthenticationService = /** @class */ (function () {
|
|
68
|
+
function AuthenticationService(authUri, http) {
|
|
69
|
+
this.authUri = authUri;
|
|
70
|
+
this.http = http;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Login and save tokens to sessionStorage then return an observable.
|
|
74
|
+
* @param username
|
|
75
|
+
* @param password
|
|
76
|
+
*/
|
|
77
|
+
AuthenticationService.prototype.login = function (username, password) {
|
|
78
|
+
var _this = this;
|
|
79
|
+
var body = 'username=' + username + '&password=' + password + '&grant_type=password';
|
|
80
|
+
var options = { headers: { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' } };
|
|
81
|
+
return this.http.post(this.authUri, body, options)
|
|
82
|
+
.pipe(operators.map(function (response) {
|
|
83
|
+
//sessionStorage.setItem('access_token', response.access_token); The client code is response to doing these.
|
|
84
|
+
//sessionStorage.setItem('expires_in', response.expires_in.toString());
|
|
85
|
+
//sessionStorage.setItem('token_type', response.token_type);
|
|
86
|
+
//sessionStorage.setItem('issued', response.issued);
|
|
87
|
+
//sessionStorage.setItem('expires', response.expires); // often up to 2 weeks by default in Asp.net identity 2.
|
|
88
|
+
_this.userName = response.username;
|
|
89
|
+
//APP_STATUSES.userName = this.userName;
|
|
90
|
+
return response;
|
|
91
|
+
}));
|
|
92
|
+
};
|
|
93
|
+
return AuthenticationService;
|
|
94
|
+
}());
|
|
95
|
+
AuthenticationService.decorators = [
|
|
96
|
+
{ type: core.Injectable }
|
|
97
|
+
];
|
|
98
|
+
AuthenticationService.ctorParameters = function () { return [
|
|
99
|
+
{ type: String, decorators: [{ type: core.Inject, args: ['auth.tokenUrl',] }] },
|
|
100
|
+
{ type: http.HttpClient }
|
|
101
|
+
]; };
|
|
102
|
+
|
|
103
|
+
/*! *****************************************************************************
|
|
104
|
+
Copyright (c) Microsoft Corporation.
|
|
105
|
+
|
|
106
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
107
|
+
purpose with or without fee is hereby granted.
|
|
108
|
+
|
|
109
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
110
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
111
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
112
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
113
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
114
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
115
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
116
|
+
***************************************************************************** */
|
|
117
|
+
/* global Reflect, Promise */
|
|
118
|
+
var extendStatics = function (d, b) {
|
|
119
|
+
extendStatics = Object.setPrototypeOf ||
|
|
120
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
121
|
+
function (d, b) { for (var p in b)
|
|
122
|
+
if (Object.prototype.hasOwnProperty.call(b, p))
|
|
123
|
+
d[p] = b[p]; };
|
|
124
|
+
return extendStatics(d, b);
|
|
125
|
+
};
|
|
126
|
+
function __extends(d, b) {
|
|
127
|
+
if (typeof b !== "function" && b !== null)
|
|
128
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
129
|
+
extendStatics(d, b);
|
|
130
|
+
function __() { this.constructor = d; }
|
|
131
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
132
|
+
}
|
|
133
|
+
var __assign = function () {
|
|
134
|
+
__assign = Object.assign || function __assign(t) {
|
|
135
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
136
|
+
s = arguments[i];
|
|
137
|
+
for (var p in s)
|
|
138
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
139
|
+
t[p] = s[p];
|
|
140
|
+
}
|
|
141
|
+
return t;
|
|
142
|
+
};
|
|
143
|
+
return __assign.apply(this, arguments);
|
|
144
|
+
};
|
|
145
|
+
function __rest(s, e) {
|
|
146
|
+
var t = {};
|
|
147
|
+
for (var p in s)
|
|
148
|
+
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
149
|
+
t[p] = s[p];
|
|
150
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
151
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
152
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
153
|
+
t[p[i]] = s[p[i]];
|
|
154
|
+
}
|
|
155
|
+
return t;
|
|
156
|
+
}
|
|
157
|
+
function __decorate(decorators, target, key, desc) {
|
|
158
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
159
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
160
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
161
|
+
else
|
|
162
|
+
for (var i = decorators.length - 1; i >= 0; i--)
|
|
163
|
+
if (d = decorators[i])
|
|
164
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
165
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
166
|
+
}
|
|
167
|
+
function __param(paramIndex, decorator) {
|
|
168
|
+
return function (target, key) { decorator(target, key, paramIndex); };
|
|
169
|
+
}
|
|
170
|
+
function __metadata(metadataKey, metadataValue) {
|
|
171
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
172
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
173
|
+
}
|
|
174
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
175
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
176
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
177
|
+
function fulfilled(value) { try {
|
|
178
|
+
step(generator.next(value));
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
reject(e);
|
|
182
|
+
} }
|
|
183
|
+
function rejected(value) { try {
|
|
184
|
+
step(generator["throw"](value));
|
|
185
|
+
}
|
|
186
|
+
catch (e) {
|
|
187
|
+
reject(e);
|
|
188
|
+
} }
|
|
189
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
190
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function __generator(thisArg, body) {
|
|
194
|
+
var _ = { label: 0, sent: function () { if (t[0] & 1)
|
|
195
|
+
throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
196
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function () { return this; }), g;
|
|
197
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
198
|
+
function step(op) {
|
|
199
|
+
if (f)
|
|
200
|
+
throw new TypeError("Generator is already executing.");
|
|
201
|
+
while (_)
|
|
202
|
+
try {
|
|
203
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
|
204
|
+
return t;
|
|
205
|
+
if (y = 0, t)
|
|
206
|
+
op = [op[0] & 2, t.value];
|
|
207
|
+
switch (op[0]) {
|
|
208
|
+
case 0:
|
|
209
|
+
case 1:
|
|
210
|
+
t = op;
|
|
211
|
+
break;
|
|
212
|
+
case 4:
|
|
213
|
+
_.label++;
|
|
214
|
+
return { value: op[1], done: false };
|
|
215
|
+
case 5:
|
|
216
|
+
_.label++;
|
|
217
|
+
y = op[1];
|
|
218
|
+
op = [0];
|
|
219
|
+
continue;
|
|
220
|
+
case 7:
|
|
221
|
+
op = _.ops.pop();
|
|
222
|
+
_.trys.pop();
|
|
223
|
+
continue;
|
|
224
|
+
default:
|
|
225
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
226
|
+
_ = 0;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
|
|
230
|
+
_.label = op[1];
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
234
|
+
_.label = t[1];
|
|
235
|
+
t = op;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
if (t && _.label < t[2]) {
|
|
239
|
+
_.label = t[2];
|
|
240
|
+
_.ops.push(op);
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
if (t[2])
|
|
244
|
+
_.ops.pop();
|
|
245
|
+
_.trys.pop();
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
op = body.call(thisArg, _);
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
op = [6, e];
|
|
252
|
+
y = 0;
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
f = t = 0;
|
|
256
|
+
}
|
|
257
|
+
if (op[0] & 5)
|
|
258
|
+
throw op[1];
|
|
259
|
+
return { value: op[0] ? op[1] : void 0, done: true };
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
var __createBinding = Object.create ? (function (o, m, k, k2) {
|
|
263
|
+
if (k2 === undefined)
|
|
264
|
+
k2 = k;
|
|
265
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; } });
|
|
266
|
+
}) : (function (o, m, k, k2) {
|
|
267
|
+
if (k2 === undefined)
|
|
268
|
+
k2 = k;
|
|
269
|
+
o[k2] = m[k];
|
|
270
|
+
});
|
|
271
|
+
function __exportStar(m, o) {
|
|
272
|
+
for (var p in m)
|
|
273
|
+
if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p))
|
|
274
|
+
__createBinding(o, m, p);
|
|
275
|
+
}
|
|
276
|
+
function __values(o) {
|
|
277
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
278
|
+
if (m)
|
|
279
|
+
return m.call(o);
|
|
280
|
+
if (o && typeof o.length === "number")
|
|
281
|
+
return {
|
|
282
|
+
next: function () {
|
|
283
|
+
if (o && i >= o.length)
|
|
284
|
+
o = void 0;
|
|
285
|
+
return { value: o && o[i++], done: !o };
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
289
|
+
}
|
|
290
|
+
function __read(o, n) {
|
|
291
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
292
|
+
if (!m)
|
|
293
|
+
return o;
|
|
294
|
+
var i = m.call(o), r, ar = [], e;
|
|
295
|
+
try {
|
|
296
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
|
|
297
|
+
ar.push(r.value);
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
e = { error: error };
|
|
301
|
+
}
|
|
302
|
+
finally {
|
|
303
|
+
try {
|
|
304
|
+
if (r && !r.done && (m = i["return"]))
|
|
305
|
+
m.call(i);
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
if (e)
|
|
309
|
+
throw e.error;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return ar;
|
|
313
|
+
}
|
|
314
|
+
/** @deprecated */
|
|
315
|
+
function __spread() {
|
|
316
|
+
for (var ar = [], i = 0; i < arguments.length; i++)
|
|
317
|
+
ar = ar.concat(__read(arguments[i]));
|
|
318
|
+
return ar;
|
|
319
|
+
}
|
|
320
|
+
/** @deprecated */
|
|
321
|
+
function __spreadArrays() {
|
|
322
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++)
|
|
323
|
+
s += arguments[i].length;
|
|
324
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
325
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
326
|
+
r[k] = a[j];
|
|
327
|
+
return r;
|
|
328
|
+
}
|
|
329
|
+
function __spreadArray(to, from) {
|
|
330
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
331
|
+
to[j] = from[i];
|
|
332
|
+
return to;
|
|
333
|
+
}
|
|
334
|
+
function __await(v) {
|
|
335
|
+
return this instanceof __await ? (this.v = v, this) : new __await(v);
|
|
336
|
+
}
|
|
337
|
+
function __asyncGenerator(thisArg, _arguments, generator) {
|
|
338
|
+
if (!Symbol.asyncIterator)
|
|
339
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
340
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
341
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
342
|
+
function verb(n) { if (g[n])
|
|
343
|
+
i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
344
|
+
function resume(n, v) { try {
|
|
345
|
+
step(g[n](v));
|
|
346
|
+
}
|
|
347
|
+
catch (e) {
|
|
348
|
+
settle(q[0][3], e);
|
|
349
|
+
} }
|
|
350
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
351
|
+
function fulfill(value) { resume("next", value); }
|
|
352
|
+
function reject(value) { resume("throw", value); }
|
|
353
|
+
function settle(f, v) { if (f(v), q.shift(), q.length)
|
|
354
|
+
resume(q[0][0], q[0][1]); }
|
|
355
|
+
}
|
|
356
|
+
function __asyncDelegator(o) {
|
|
357
|
+
var i, p;
|
|
358
|
+
return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
|
|
359
|
+
function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
|
|
360
|
+
}
|
|
361
|
+
function __asyncValues(o) {
|
|
362
|
+
if (!Symbol.asyncIterator)
|
|
363
|
+
throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
364
|
+
var m = o[Symbol.asyncIterator], i;
|
|
365
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
366
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
367
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function (v) { resolve({ value: v, done: d }); }, reject); }
|
|
368
|
+
}
|
|
369
|
+
function __makeTemplateObject(cooked, raw) {
|
|
370
|
+
if (Object.defineProperty) {
|
|
371
|
+
Object.defineProperty(cooked, "raw", { value: raw });
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
cooked.raw = raw;
|
|
375
|
+
}
|
|
376
|
+
return cooked;
|
|
377
|
+
}
|
|
378
|
+
;
|
|
379
|
+
var __setModuleDefault = Object.create ? (function (o, v) {
|
|
380
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
381
|
+
}) : function (o, v) {
|
|
382
|
+
o["default"] = v;
|
|
383
|
+
};
|
|
384
|
+
function __importStar(mod) {
|
|
385
|
+
if (mod && mod.__esModule)
|
|
386
|
+
return mod;
|
|
387
|
+
var result = {};
|
|
388
|
+
if (mod != null)
|
|
389
|
+
for (var k in mod)
|
|
390
|
+
if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
|
|
391
|
+
__createBinding(result, mod, k);
|
|
392
|
+
__setModuleDefault(result, mod);
|
|
393
|
+
return result;
|
|
394
|
+
}
|
|
395
|
+
function __importDefault(mod) {
|
|
396
|
+
return (mod && mod.__esModule) ? mod : { default: mod };
|
|
397
|
+
}
|
|
398
|
+
function __classPrivateFieldGet(receiver, state, kind, f) {
|
|
399
|
+
if (kind === "a" && !f)
|
|
400
|
+
throw new TypeError("Private accessor was defined without a getter");
|
|
401
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
402
|
+
throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
403
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
404
|
+
}
|
|
405
|
+
function __classPrivateFieldSet(receiver, state, value, kind, f) {
|
|
406
|
+
if (kind === "m")
|
|
407
|
+
throw new TypeError("Private method is not writable");
|
|
408
|
+
if (kind === "a" && !f)
|
|
409
|
+
throw new TypeError("Private accessor was defined without a setter");
|
|
410
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver))
|
|
411
|
+
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
412
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Currency calculations. Undefined input of number is considered zero, just like null.
|
|
417
|
+
*/
|
|
418
|
+
var CurrencyFunc = /** @class */ (function () {
|
|
419
|
+
function CurrencyFunc() {
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
*
|
|
423
|
+
* @param num
|
|
424
|
+
* @param decimalPlaces default 0
|
|
425
|
+
*/
|
|
426
|
+
CurrencyFunc.bankerRound = function (num, decimalPlaces) {
|
|
427
|
+
if (!num) {
|
|
428
|
+
return 0;
|
|
429
|
+
}
|
|
430
|
+
var d = decimalPlaces || 0;
|
|
431
|
+
var m = Math.pow(10, d);
|
|
432
|
+
var n = +(d ? num * m : num).toFixed(8); // Avoid rounding errors
|
|
433
|
+
var i = Math.floor(n), f = n - i;
|
|
434
|
+
var e = 1e-8; // Allow for rounding errors in f
|
|
435
|
+
var r = (f > 0.5 - e && f < 0.5 + e) ?
|
|
436
|
+
((i % 2 === 0) ? i : i + 1) : Math.round(n);
|
|
437
|
+
return d ? r / m : r;
|
|
438
|
+
};
|
|
439
|
+
CurrencyFunc.bankerRoundTo5cents = function (num) {
|
|
440
|
+
if (!num) {
|
|
441
|
+
return 0;
|
|
442
|
+
}
|
|
443
|
+
var r = this.bankerRound(Math.ceil(num * 20 - 0.5) / 20, 2);
|
|
444
|
+
return r;
|
|
445
|
+
};
|
|
446
|
+
CurrencyFunc.ceilTo5cents = function (num) {
|
|
447
|
+
if (!num) {
|
|
448
|
+
return 0;
|
|
449
|
+
}
|
|
450
|
+
var r = this.bankerRound(Math.ceil(num * 20) / 20, 4);
|
|
451
|
+
var roundup = Math.ceil(r * 10000) / 10000;
|
|
452
|
+
return roundup;
|
|
453
|
+
};
|
|
454
|
+
CurrencyFunc.transformCurrency = function (value, fractionSize) {
|
|
455
|
+
if (fractionSize === void 0) { fractionSize = 2; }
|
|
456
|
+
var _a = __read((value || '').toString()
|
|
457
|
+
.split(this.DECIMAL_SEPARATOR), 2), integer = _a[0], _b = _a[1], fraction = _b === void 0 ? '' : _b;
|
|
458
|
+
fraction = fractionSize > 0
|
|
459
|
+
? this.DECIMAL_SEPARATOR + (fraction + this.PADDING).substring(0, fractionSize)
|
|
460
|
+
: '';
|
|
461
|
+
integer = integer.replace(/\B(?=(\d{3})+(?!\d))/g, this.THOUSANDS_SEPARATOR);
|
|
462
|
+
return integer + fraction;
|
|
463
|
+
};
|
|
464
|
+
CurrencyFunc.parseCurrency = function (value, fractionSize) {
|
|
465
|
+
if (fractionSize === void 0) { fractionSize = 2; }
|
|
466
|
+
var _a = __read((value || '').split(this.DECIMAL_SEPARATOR), 2), integer = _a[0], _b = _a[1], fraction = _b === void 0 ? '' : _b;
|
|
467
|
+
integer = integer.replace(new RegExp(this.THOUSANDS_SEPARATOR, 'g'), '');
|
|
468
|
+
fraction = parseInt(fraction, 10) > 0 && fractionSize > 0
|
|
469
|
+
? this.DECIMAL_SEPARATOR + (fraction + this.PADDING).substring(0, fractionSize)
|
|
470
|
+
: '';
|
|
471
|
+
return integer + fraction;
|
|
472
|
+
};
|
|
473
|
+
//http://stackoverflow.com/questions/2998784/how-to-output-integers-with-leading-zeros-in-javascript
|
|
474
|
+
CurrencyFunc.pad = function (num, size) {
|
|
475
|
+
num = null;
|
|
476
|
+
var s = num + '';
|
|
477
|
+
while (s.length < size) {
|
|
478
|
+
s = '0' + s;
|
|
479
|
+
}
|
|
480
|
+
return s;
|
|
481
|
+
};
|
|
482
|
+
CurrencyFunc.sum = function (ns) {
|
|
483
|
+
var r = ns.reduce(function (a, b) { return (a !== null && a !== void 0 ? a : 0) + (b !== null && b !== void 0 ? b : 0); }, 0);
|
|
484
|
+
return r;
|
|
485
|
+
};
|
|
486
|
+
return CurrencyFunc;
|
|
487
|
+
}());
|
|
488
|
+
CurrencyFunc.DECIMAL_SEPARATOR = '.';
|
|
489
|
+
CurrencyFunc.THOUSANDS_SEPARATOR = ',';
|
|
490
|
+
CurrencyFunc.PADDING = '000000';
|
|
491
|
+
|
|
492
|
+
var DateFunc = /** @class */ (function () {
|
|
493
|
+
function DateFunc() {
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Transform UTC DateTime to local date without H, M and S. For example, the month day of 2018-01-23T22:00:00Z is 24 in Australia.
|
|
497
|
+
* @param dtUtc
|
|
498
|
+
* @param offsetMinutes if not defined, it will be new Date().getTimezoneOffset(). //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
|
|
499
|
+
*/
|
|
500
|
+
DateFunc.dateTimeUtcToLocalDateNumber = function (dtUtc) {
|
|
501
|
+
if (!dtUtc) {
|
|
502
|
+
return 0; //0 is better for calculation by the clients.
|
|
503
|
+
}
|
|
504
|
+
var localDt = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);
|
|
505
|
+
var localDNum = localDt.setHours(0, 0, 0, 0);
|
|
506
|
+
return localDNum;
|
|
507
|
+
};
|
|
508
|
+
/**
|
|
509
|
+
* Date only. However, the date may still be in UTC.
|
|
510
|
+
* @param dtUtc
|
|
511
|
+
*/
|
|
512
|
+
DateFunc.dateTimeUtcToLocalDate = function (dtUtc) {
|
|
513
|
+
var localDt = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);
|
|
514
|
+
var localD = localDt.setHours(0, 0, 0, 0);
|
|
515
|
+
return new Date(localD);
|
|
516
|
+
};
|
|
517
|
+
DateFunc.localISODateString = function (dtUtc) {
|
|
518
|
+
var dt = moment__default['default'](dtUtc).local();
|
|
519
|
+
return dt.format('YYYY-MM-DD');
|
|
520
|
+
};
|
|
521
|
+
/**
|
|
522
|
+
* locate date ONLY (no time) to UTC date.
|
|
523
|
+
* @param dt if dt contain time info, it will become dt.setHours(0, 0, 0, 0)
|
|
524
|
+
*/
|
|
525
|
+
DateFunc.localDateToUtc = function (d) {
|
|
526
|
+
var dt = moment__default['default'](d).toDate();
|
|
527
|
+
var n = dt.setHours(0, 0, 0, 0);
|
|
528
|
+
var offset = dt.getTimezoneOffset() * 60000;
|
|
529
|
+
return new Date(n + offset);
|
|
530
|
+
};
|
|
531
|
+
DateFunc.getTimezoneOffset = function () {
|
|
532
|
+
var dt = this.today;
|
|
533
|
+
return dt.getTimezoneOffset();
|
|
534
|
+
};
|
|
535
|
+
/**
|
|
536
|
+
* Transform UTC DateTime to local dateTime.
|
|
537
|
+
* @param dtUtc
|
|
538
|
+
* @param offsetMinutes if not defined, it will be new Date().getTimezoneOffset(). //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset
|
|
539
|
+
*/
|
|
540
|
+
DateFunc.dateTimeUtcToLocalDateTime = function (dtUtc) {
|
|
541
|
+
var stillUtc = moment__default['default'].utc(dtUtc).toDate();
|
|
542
|
+
return moment__default['default'](stillUtc).local().toDate();
|
|
543
|
+
};
|
|
544
|
+
DateFunc.dateTimeUtcToLocaMoment = function (dtUtc) {
|
|
545
|
+
var stillUtc = moment__default['default'].utc(dtUtc);
|
|
546
|
+
return stillUtc.local();
|
|
547
|
+
};
|
|
548
|
+
DateFunc.getEndOfWeek = function (dt) {
|
|
549
|
+
return moment__default['default'](dt).endOf('isoWeek').toDate();
|
|
550
|
+
};
|
|
551
|
+
DateFunc.getStartOfWeek = function (dt) {
|
|
552
|
+
return moment__default['default'](dt).startOf('isoWeek').toDate();
|
|
553
|
+
};
|
|
554
|
+
DateFunc.getEndOfMonth = function (dt) {
|
|
555
|
+
// return new Date(dt.getFullYear(), dt.getMonth() + 1, 0, 23, 59, 59, 999);
|
|
556
|
+
return moment__default['default'](dt).endOf('month').toDate();
|
|
557
|
+
};
|
|
558
|
+
DateFunc.getStartOfMonth = function (dt) {
|
|
559
|
+
return moment__default['default'](dt).startOf('month').toDate();
|
|
560
|
+
};
|
|
561
|
+
DateFunc.getDaysBetweenDates = function (dt1, dt2) {
|
|
562
|
+
return this.getDaysBetween(dt1, dt2);
|
|
563
|
+
};
|
|
564
|
+
DateFunc.getEndOfDate = function (dt) {
|
|
565
|
+
return dt ? new Date(dt.setHours(23, 59, 59, 999)) :
|
|
566
|
+
new Date(this.now.setHours(23, 59, 59, 999));
|
|
567
|
+
};
|
|
568
|
+
DateFunc.getStartOfDate = function (dt) {
|
|
569
|
+
return moment__default['default'](dt).startOf('day').toDate();
|
|
570
|
+
};
|
|
571
|
+
DateFunc.getEndOfToday = function () {
|
|
572
|
+
// return new Date((new Date(Date.now())).setHours(23, 59, 59, 999));
|
|
573
|
+
return moment__default['default'](Date.now()).endOf('day').toDate();
|
|
574
|
+
};
|
|
575
|
+
DateFunc.getStartOfToday = function () {
|
|
576
|
+
// return new Date((new Date(Date.now())).setHours(0, 0, 0, 0));
|
|
577
|
+
return moment__default['default'](Date.now()).startOf('day').toDate();
|
|
578
|
+
};
|
|
579
|
+
//inspired https://stackoverflow.com/questions/563406/add-days-to-javascript-date
|
|
580
|
+
DateFunc.addDays = function (dt, days) {
|
|
581
|
+
if (days === void 0) { days = 0; }
|
|
582
|
+
var dat = moment__default['default'](dt);
|
|
583
|
+
dat.add(days, 'days');
|
|
584
|
+
return dat.toDate();
|
|
585
|
+
};
|
|
586
|
+
DateFunc.subtractDays = function (dt, days) {
|
|
587
|
+
if (days === void 0) { days = 0; }
|
|
588
|
+
var dat = moment__default['default'](dt);
|
|
589
|
+
dat.subtract(days, 'days');
|
|
590
|
+
return dat.toDate();
|
|
591
|
+
};
|
|
592
|
+
Object.defineProperty(DateFunc, "today", {
|
|
593
|
+
/**
|
|
594
|
+
* Start of today
|
|
595
|
+
*/
|
|
596
|
+
get: function () {
|
|
597
|
+
return this.getStartOfToday();
|
|
598
|
+
},
|
|
599
|
+
enumerable: false,
|
|
600
|
+
configurable: true
|
|
601
|
+
});
|
|
602
|
+
Object.defineProperty(DateFunc, "now", {
|
|
603
|
+
get: function () {
|
|
604
|
+
return new Date(Date.now());
|
|
605
|
+
},
|
|
606
|
+
enumerable: false,
|
|
607
|
+
configurable: true
|
|
608
|
+
});
|
|
609
|
+
DateFunc.getNext5MinuteMark = function () {
|
|
610
|
+
var m = moment__default['default']().set('second', 0).set('millisecond', 0);
|
|
611
|
+
var minute = m.minute();
|
|
612
|
+
var mod = minute % 5;
|
|
613
|
+
if (mod) {
|
|
614
|
+
var delta = 5 - mod;
|
|
615
|
+
return m.add(delta, 'm').toDate();
|
|
616
|
+
}
|
|
617
|
+
return m.toDate();
|
|
618
|
+
};
|
|
619
|
+
DateFunc.getYMD = function (d) {
|
|
620
|
+
return moment__default['default'](d).format('YYYYMMDD');
|
|
621
|
+
};
|
|
622
|
+
DateFunc.getDMYWithSlash = function (d) {
|
|
623
|
+
return moment__default['default'](d).format('DD/MM/YYYY');
|
|
624
|
+
};
|
|
625
|
+
DateFunc.getDMYHmWithSlash = function (d) {
|
|
626
|
+
return moment__default['default'](d).format('DD/MM/YYYY HH:mm');
|
|
627
|
+
};
|
|
628
|
+
DateFunc.getMcpTime = function (dt) {
|
|
629
|
+
return moment__default['default'](dt).format('HH:mm:ss.SSSZ');
|
|
630
|
+
};
|
|
631
|
+
/**
|
|
632
|
+
* In 24 hour format
|
|
633
|
+
* @param dtUtc
|
|
634
|
+
*/
|
|
635
|
+
DateFunc.getLocalDMYHmWithSlash = function (dtUtc) {
|
|
636
|
+
var d = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);
|
|
637
|
+
return moment__default['default'](d).format('DD/MM/YYYY HH:mm');
|
|
638
|
+
};
|
|
639
|
+
/**
|
|
640
|
+
* Offset minutes comparing with today
|
|
641
|
+
*/
|
|
642
|
+
DateFunc.getOffsetMinutes = function (dtUtc) {
|
|
643
|
+
var dm1 = moment__default['default'](dtUtc);
|
|
644
|
+
var dm2 = moment__default['default'](new Date().setHours(0, 0, 0, 0));
|
|
645
|
+
return dm1.diff(dm2, 'minutes');
|
|
646
|
+
};
|
|
647
|
+
DateFunc.getDaysBetween = function (d1, d2) {
|
|
648
|
+
var dm1 = moment__default['default'](d1);
|
|
649
|
+
var dm2 = moment__default['default'](d2);
|
|
650
|
+
return dm2.diff(dm1, 'days');
|
|
651
|
+
};
|
|
652
|
+
/**
|
|
653
|
+
* Get hour of the date. If Date is not defined, the hour will be current hour.
|
|
654
|
+
* @param dtUtc
|
|
655
|
+
*/
|
|
656
|
+
DateFunc.getHour = function (dtUtc) {
|
|
657
|
+
var m = moment__default['default'](dtUtc);
|
|
658
|
+
return m.hours();
|
|
659
|
+
};
|
|
660
|
+
DateFunc.getMinute = function (dtUtc) {
|
|
661
|
+
var m = moment__default['default'](dtUtc);
|
|
662
|
+
return m.minutes();
|
|
663
|
+
};
|
|
664
|
+
DateFunc.composeDateTime = function (dt, h, minute) {
|
|
665
|
+
if (h === void 0) { h = 0; }
|
|
666
|
+
if (minute === void 0) { minute = 0; }
|
|
667
|
+
var mt = moment__default['default'](dt);
|
|
668
|
+
return new Date(mt.toDate().setHours(h, minute, 0, 0));
|
|
669
|
+
};
|
|
670
|
+
DateFunc.olderThan24Hours = function (d) {
|
|
671
|
+
var m = moment__default['default'](d);
|
|
672
|
+
return moment__default['default']().diff(m, 'hours') >= 24;
|
|
673
|
+
};
|
|
674
|
+
DateFunc.olderThan24HoursUtc = function (dtUtc) {
|
|
675
|
+
return DateFunc.getHourAgeUtc(dtUtc) >= 24;
|
|
676
|
+
};
|
|
677
|
+
DateFunc.olderThanHours = function (d, hours) {
|
|
678
|
+
var m = moment__default['default'](d);
|
|
679
|
+
return moment__default['default']().diff(m, 'hours') >= hours;
|
|
680
|
+
};
|
|
681
|
+
DateFunc.olderThanHoursUtc = function (dtUtc, hours) {
|
|
682
|
+
return DateFunc.getHourAgeUtc(dtUtc) >= hours;
|
|
683
|
+
};
|
|
684
|
+
DateFunc.olderThanMinutes = function (d, minutes) {
|
|
685
|
+
var m = moment__default['default'](d);
|
|
686
|
+
return moment__default['default']().diff(m, 'minutes') >= minutes;
|
|
687
|
+
};
|
|
688
|
+
/**
|
|
689
|
+
* It could be 11PM yesterday, and 1 AM today. Actually based on local today.
|
|
690
|
+
*/
|
|
691
|
+
DateFunc.olderThan1Day = function (dtUtc) {
|
|
692
|
+
return DateFunc.getDayAgeUtc(dtUtc) > 0;
|
|
693
|
+
};
|
|
694
|
+
DateFunc.getHourAge = function (d) {
|
|
695
|
+
var m = moment__default['default'](d);
|
|
696
|
+
return moment__default['default']().diff(m, 'hours');
|
|
697
|
+
};
|
|
698
|
+
DateFunc.getHourAgeUtc = function (dtUtc) {
|
|
699
|
+
var m = moment__default['default'].utc(dtUtc);
|
|
700
|
+
return moment__default['default'].utc().diff(m, 'hours');
|
|
701
|
+
};
|
|
702
|
+
/**
|
|
703
|
+
* Compare utc date with utc now.
|
|
704
|
+
* @param dtUtc
|
|
705
|
+
*/
|
|
706
|
+
DateFunc.getDayAgeUtc = function (dtUtc) {
|
|
707
|
+
var m = moment__default['default'].utc(dtUtc);
|
|
708
|
+
return moment__default['default'].utc().diff(m, 'days');
|
|
709
|
+
};
|
|
710
|
+
/**
|
|
711
|
+
* How many years from now.
|
|
712
|
+
* @param d
|
|
713
|
+
* @returns
|
|
714
|
+
*/
|
|
715
|
+
DateFunc.getAge = function (d) {
|
|
716
|
+
var m = moment__default['default'](d);
|
|
717
|
+
return moment__default['default']().diff(m, 'years');
|
|
718
|
+
};
|
|
719
|
+
/**
|
|
720
|
+
* Year of date.
|
|
721
|
+
* @param d
|
|
722
|
+
* @returns
|
|
723
|
+
*/
|
|
724
|
+
DateFunc.getYear = function (d) {
|
|
725
|
+
var m = moment__default['default'](d);
|
|
726
|
+
return m.year();
|
|
727
|
+
};
|
|
728
|
+
DateFunc.getUtcNow = function () {
|
|
729
|
+
return moment__default['default'].utc().toDate();
|
|
730
|
+
};
|
|
731
|
+
DateFunc.addMinutes = function (d, m) {
|
|
732
|
+
return moment__default['default'](d).add(m, 'm').toDate();
|
|
733
|
+
};
|
|
734
|
+
DateFunc.addMonth = function (d, m) {
|
|
735
|
+
return moment__default['default'](d).add(m, 'M').toDate();
|
|
736
|
+
};
|
|
737
|
+
DateFunc.getDuration = function (d1, d2) {
|
|
738
|
+
var md1 = moment__default['default'](d1);
|
|
739
|
+
var md2 = moment__default['default'](d2);
|
|
740
|
+
return moment__default['default'].duration(md2.diff(md1));
|
|
741
|
+
};
|
|
742
|
+
/**
|
|
743
|
+
* Convert minutes from midnight to HH:mm text
|
|
744
|
+
* @param mins
|
|
745
|
+
*/
|
|
746
|
+
DateFunc.getHMFromMins = function (mins) {
|
|
747
|
+
// do not include the first validation check if you want, for example,
|
|
748
|
+
// getTimeFromMins(1530) to equal getTimeFromMins(90) (i.e. mins rollover)
|
|
749
|
+
if (mins >= 24 * 60 || mins < 0) {
|
|
750
|
+
throw new RangeError('Valid input should be greater than or equal to 0 and less than 1440.');
|
|
751
|
+
}
|
|
752
|
+
var h = mins / 60 | 0, m = mins % 60 | 0;
|
|
753
|
+
return moment__default['default'].utc().hours(h).minutes(m).format('HH:mm');
|
|
754
|
+
};
|
|
755
|
+
DateFunc.getMinutesSinceMidnight = function (d) {
|
|
756
|
+
var m = moment__default['default'](d);
|
|
757
|
+
var midnight = moment__default['default'](d).startOf('day'); //Mutates the original moment by setting it to the start of a unit of time. So I have better not to use m which wil be changed by calling this function
|
|
758
|
+
return m.diff(midnight, 'minutes');
|
|
759
|
+
};
|
|
760
|
+
DateFunc.getMinutesBetween = function (start, end) {
|
|
761
|
+
var m = moment__default['default'](start);
|
|
762
|
+
var m2 = moment__default['default'](end);
|
|
763
|
+
return m2.diff(m, 'minutes');
|
|
764
|
+
};
|
|
765
|
+
/**
|
|
766
|
+
* Parse json string with date serialized into string, and get proper date object back
|
|
767
|
+
* @param s
|
|
768
|
+
*/
|
|
769
|
+
DateFunc.dateSafeJsonParse = function (s) {
|
|
770
|
+
return JSON.parse(s, this.dateReviver);
|
|
771
|
+
};
|
|
772
|
+
DateFunc.dateReviver = function (key, value) {
|
|
773
|
+
if (DateFunc.isSerializedDate(value)) {
|
|
774
|
+
return (new Date(value));
|
|
775
|
+
}
|
|
776
|
+
// If it's not a date-string, we want to return the value as-is. If we fail to return
|
|
777
|
+
// a value, it will be omitted from the resultant data structure.
|
|
778
|
+
return (value);
|
|
779
|
+
};
|
|
780
|
+
// I determine if the given value is a string that matches the serialized-date pattern.
|
|
781
|
+
DateFunc.isSerializedDate = function (value) {
|
|
782
|
+
// Dates are serialized in TZ format, example: '1981-12-20T04:00:14.000Z'.
|
|
783
|
+
var datePattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
|
|
784
|
+
return (DateFunc.isString(value) && datePattern.test(value));
|
|
785
|
+
};
|
|
786
|
+
// I determine if the given value is a String.
|
|
787
|
+
DateFunc.isString = function (value) {
|
|
788
|
+
return ({}.toString.call(value) === '[object String]');
|
|
789
|
+
};
|
|
790
|
+
DateFunc.dateSafeParse = function (s) {
|
|
791
|
+
var m = moment__default['default'](s);
|
|
792
|
+
return m.toDate();
|
|
793
|
+
};
|
|
794
|
+
DateFunc.composeDateWithMinutes = function (d, minute) {
|
|
795
|
+
var m = moment__default['default'](d);
|
|
796
|
+
var midnight = moment__default['default'](d).startOf('day'); // Mutates the original moment by setting it to the start of a unit of time. So I have better not to use m which wil be changed by calling this function
|
|
797
|
+
midnight.add(minute, 'minutes');
|
|
798
|
+
return midnight.toDate();
|
|
799
|
+
};
|
|
800
|
+
/**
|
|
801
|
+
* Safe compare since date data may be considered as string rather than date.
|
|
802
|
+
* @param d1
|
|
803
|
+
* @param d2
|
|
804
|
+
*/
|
|
805
|
+
DateFunc.compare = function (d1, d2) {
|
|
806
|
+
if (!d1 && !d2) {
|
|
807
|
+
return 0;
|
|
808
|
+
}
|
|
809
|
+
if (!d1) {
|
|
810
|
+
return -NaN;
|
|
811
|
+
}
|
|
812
|
+
if (!d2) {
|
|
813
|
+
return NaN;
|
|
814
|
+
}
|
|
815
|
+
var dd1 = (new Date(d1)).valueOf();
|
|
816
|
+
var dd2 = (new Date(d2)).valueOf();
|
|
817
|
+
return dd1 - dd2;
|
|
818
|
+
};
|
|
819
|
+
return DateFunc;
|
|
820
|
+
}());
|
|
821
|
+
|
|
822
|
+
var HtmlPrintFunc = /** @class */ (function () {
|
|
823
|
+
function HtmlPrintFunc() {
|
|
824
|
+
}
|
|
825
|
+
/**
|
|
826
|
+
* Print with CSS for internal reports
|
|
827
|
+
* @param htmlTags
|
|
828
|
+
* @param cssUrl
|
|
829
|
+
*/
|
|
830
|
+
HtmlPrintFunc.printWithCSS = function (htmlTags, cssUrl) {
|
|
831
|
+
if (window) {
|
|
832
|
+
var htmlToPrint = "<html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"" + cssUrl + "\" media=\"screen,print\"/>\n</head><body onload=\"window.print()\">" + htmlTags + "</body></html>";
|
|
833
|
+
var popup = window.open('', '_blank', 'width=1024,height=768');
|
|
834
|
+
popup === null || popup === void 0 ? void 0 : popup.document.open();
|
|
835
|
+
popup === null || popup === void 0 ? void 0 : popup.document.write(htmlToPrint);
|
|
836
|
+
popup === null || popup === void 0 ? void 0 : popup.document.close();
|
|
837
|
+
}
|
|
838
|
+
return true;
|
|
839
|
+
};
|
|
840
|
+
/**
|
|
841
|
+
* Print for external documents.
|
|
842
|
+
* @param htmlTags
|
|
843
|
+
*/
|
|
844
|
+
HtmlPrintFunc.print = function (htmlTags) {
|
|
845
|
+
if (window) {
|
|
846
|
+
var htmlToPrint = "<html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n</head><body onload=\"window.print()\">" + htmlTags + "</body></html>";
|
|
847
|
+
var popup = window.open('', '_blank', 'width=1024,height=768');
|
|
848
|
+
popup === null || popup === void 0 ? void 0 : popup.document.open();
|
|
849
|
+
popup === null || popup === void 0 ? void 0 : popup.document.write(htmlToPrint);
|
|
850
|
+
popup === null || popup === void 0 ? void 0 : popup.document.close();
|
|
851
|
+
}
|
|
852
|
+
return true;
|
|
853
|
+
};
|
|
854
|
+
/**
|
|
855
|
+
* Print image url through html img.
|
|
856
|
+
* @param url
|
|
857
|
+
*/
|
|
858
|
+
HtmlPrintFunc.printImage = function (url) {
|
|
859
|
+
var imageTags = "<img src=\"" + url + "\" alt=\"Image from URL\"/>";
|
|
860
|
+
HtmlPrintFunc.print(imageTags);
|
|
861
|
+
};
|
|
862
|
+
return HtmlPrintFunc;
|
|
863
|
+
}());
|
|
864
|
+
|
|
865
|
+
var JavaScriptFunc = /** @class */ (function () {
|
|
866
|
+
function JavaScriptFunc() {
|
|
867
|
+
}
|
|
868
|
+
/**
|
|
869
|
+
* Some business functions depend on external JavaScript libraries. Lazy loading of respective business modules is good,
|
|
870
|
+
* and this function supports lazy loading of JS libraries.
|
|
871
|
+
* @param scriptUrl
|
|
872
|
+
* @returns Promise for subsequent JS function calls.
|
|
873
|
+
*/
|
|
874
|
+
JavaScriptFunc.loadExternalScript = function (scriptUrl) {
|
|
875
|
+
return new Promise(function (resolve, reject) {
|
|
876
|
+
var scriptElement = document.createElement('script');
|
|
877
|
+
scriptElement.src = scriptUrl;
|
|
878
|
+
scriptElement.onload = resolve;
|
|
879
|
+
document.body.appendChild(scriptElement);
|
|
880
|
+
});
|
|
881
|
+
};
|
|
882
|
+
return JavaScriptFunc;
|
|
883
|
+
}());
|
|
884
|
+
|
|
885
|
+
/**
|
|
886
|
+
* Basic JSON functions
|
|
887
|
+
*/
|
|
888
|
+
var JsonFunc = /** @class */ (function () {
|
|
889
|
+
function JsonFunc() {
|
|
890
|
+
}
|
|
891
|
+
/**
|
|
892
|
+
*
|
|
893
|
+
* @param array Group by a property of array element.
|
|
894
|
+
* @param propertyName
|
|
895
|
+
* @returns
|
|
896
|
+
*/
|
|
897
|
+
JsonFunc.groupBy = function (array, propertyName) {
|
|
898
|
+
return array.reduce(function (acc, obj) {
|
|
899
|
+
var key = obj[propertyName];
|
|
900
|
+
if (!acc[key]) {
|
|
901
|
+
acc[key] = [];
|
|
902
|
+
}
|
|
903
|
+
acc[key].push(obj);
|
|
904
|
+
return acc;
|
|
905
|
+
}, {});
|
|
906
|
+
};
|
|
907
|
+
/**
|
|
908
|
+
* Group by a date property. The key is always of string type and representing milliseconds.
|
|
909
|
+
* The client should convert the string to number.
|
|
910
|
+
* Angular date pipe could actually consume such string without explicitly converting to number.
|
|
911
|
+
* @param array
|
|
912
|
+
* @param propertyName
|
|
913
|
+
*/
|
|
914
|
+
JsonFunc.groupByDate = function (array, propertyName) {
|
|
915
|
+
return array.reduce(function (acc, obj) {
|
|
916
|
+
var key = DateFunc.dateTimeUtcToLocalDateNumber(obj[propertyName]);
|
|
917
|
+
if (!acc[key]) {
|
|
918
|
+
acc[key] = [];
|
|
919
|
+
}
|
|
920
|
+
acc[key].push(obj);
|
|
921
|
+
return acc;
|
|
922
|
+
}, {});
|
|
923
|
+
};
|
|
924
|
+
/**
|
|
925
|
+
* Remove null or empty fields including those in nested objects.
|
|
926
|
+
* This is useful for reducing payload of AJAX serialization.
|
|
927
|
+
* @param obj
|
|
928
|
+
*/
|
|
929
|
+
JsonFunc.removeNullOrEmptyFields = function (obj) {
|
|
930
|
+
for (var f in obj) {
|
|
931
|
+
var p = obj[f];
|
|
932
|
+
if (p === null || p === '') {
|
|
933
|
+
delete obj[f];
|
|
934
|
+
}
|
|
935
|
+
else if (typeof p === 'object' && p !== null) {
|
|
936
|
+
this.removeNullOrEmptyFields(p);
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
};
|
|
940
|
+
/**
|
|
941
|
+
*
|
|
942
|
+
* @param obj Remove null fields of object at only the 1st level.
|
|
943
|
+
*/
|
|
944
|
+
JsonFunc.removeNullFields = function (obj) {
|
|
945
|
+
for (var f in obj) {
|
|
946
|
+
if (obj[f] === null) {
|
|
947
|
+
delete obj[f];
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
};
|
|
951
|
+
return JsonFunc;
|
|
952
|
+
}());
|
|
953
|
+
|
|
954
|
+
/**
|
|
955
|
+
* String functions specific to Australia
|
|
956
|
+
*/
|
|
957
|
+
var StringAusFunc = /** @class */ (function () {
|
|
958
|
+
function StringAusFunc() {
|
|
959
|
+
}
|
|
960
|
+
/**
|
|
961
|
+
* Validate medicare number
|
|
962
|
+
* @param n
|
|
963
|
+
* @returns validation error message
|
|
964
|
+
*/
|
|
965
|
+
StringAusFunc.validateMedicare = function (n) {
|
|
966
|
+
if (!n) {
|
|
967
|
+
return null;
|
|
968
|
+
}
|
|
969
|
+
if (n && n.length === 10) {
|
|
970
|
+
var matches = n.match(/^(\d{8})(\d)/);
|
|
971
|
+
if (!matches) {
|
|
972
|
+
return {
|
|
973
|
+
code: 2, message: 'Medicare number should be all digit.'
|
|
974
|
+
};
|
|
975
|
+
}
|
|
976
|
+
var base = matches[1];
|
|
977
|
+
var checkDigit = matches[2];
|
|
978
|
+
var weights = [1, 3, 7, 9, 1, 3, 7, 9];
|
|
979
|
+
var sum = 0;
|
|
980
|
+
for (var i = 0; i < weights.length; i++) {
|
|
981
|
+
sum += parseInt(base[i], 10) * weights[i];
|
|
982
|
+
}
|
|
983
|
+
//console.debug(`sum: ${sum} checkDigits: ${checkDigit}`);
|
|
984
|
+
var isValid = sum % 10 === parseInt(checkDigit, 10);
|
|
985
|
+
if (!isValid) {
|
|
986
|
+
return {
|
|
987
|
+
code: 3, message: 'Checksum is incorrect.'
|
|
988
|
+
};
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
else {
|
|
992
|
+
return { code: 1, message: 'Length should be 10.' };
|
|
993
|
+
}
|
|
994
|
+
return null;
|
|
995
|
+
};
|
|
996
|
+
StringAusFunc.validateMedicareProviderNumber = function (providerNumber) {
|
|
997
|
+
if (!providerNumber) {
|
|
998
|
+
return null;
|
|
999
|
+
}
|
|
1000
|
+
if (!/^[0-9]{6}[0-9ABCDEFGHJKLMNPQRTUVWXY][ABFHJKLTWXY]/.test(providerNumber)) {
|
|
1001
|
+
return { code: 1, message: 'Not matching provider number format.' };
|
|
1002
|
+
}
|
|
1003
|
+
var practiceLocationValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y'];
|
|
1004
|
+
var remainderValues = ['Y', 'X', 'W', 'T', 'L', 'K', 'J', 'H', 'F', 'B', 'A'];
|
|
1005
|
+
var stemWeights = [3, 5, 8, 4, 2, 1];
|
|
1006
|
+
var stemNumbers = providerNumber.substr(0, 6).split('').map(function (char) { return parseInt(char); });
|
|
1007
|
+
var practiceLoc = practiceLocationValues.findIndex(function (e) { return e === providerNumber[6]; });
|
|
1008
|
+
var checksum = providerNumber[7];
|
|
1009
|
+
var zipped = stemWeights.map(function (x, i) { return [x, stemNumbers[i]]; });
|
|
1010
|
+
var sumWeights = zipped.map(function (y) { return y[1] * y[0]; }).reduce(function (total, num) { return total + num; });
|
|
1011
|
+
var remainder = (sumWeights + practiceLoc * 6) % 11;
|
|
1012
|
+
var result = remainderValues[remainder];
|
|
1013
|
+
var valid = result === checksum;
|
|
1014
|
+
if (!valid) {
|
|
1015
|
+
return { code: 2, message: 'Checksum is incorrect.' };
|
|
1016
|
+
}
|
|
1017
|
+
return null;
|
|
1018
|
+
};
|
|
1019
|
+
StringAusFunc.validateDVAFileNumber = function (dva) {
|
|
1020
|
+
if (!dva) {
|
|
1021
|
+
return null;
|
|
1022
|
+
}
|
|
1023
|
+
var states = ['N', 'V', 'Q', 'S', 'W', 'T'];
|
|
1024
|
+
var warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW',
|
|
1025
|
+
'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL',
|
|
1026
|
+
'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A',
|
|
1027
|
+
'N', 'NX', 'NSW', 'NSM',
|
|
1028
|
+
'BUR', 'CNK', 'CNS', 'FIJ', 'GHA', 'HKS', 'IND', 'KYA', 'MAU', 'MLS', 'MTX', 'MWI', 'NK', 'NGR', 'NRD', 'NSS', 'PK']; //British Commonwealth Countries - SP Eligibility
|
|
1029
|
+
if (!states.includes(dva.charAt(0))) {
|
|
1030
|
+
return { code: 1, message: 'State incorrect.' };
|
|
1031
|
+
}
|
|
1032
|
+
var ns = dva.match(/\d+/);
|
|
1033
|
+
if (!ns) {
|
|
1034
|
+
return { code: 2, message: 'No number.' };
|
|
1035
|
+
}
|
|
1036
|
+
var n = ns[0];
|
|
1037
|
+
var idxOfN = dva.indexOf(n);
|
|
1038
|
+
var warCode = dva.substring(1, idxOfN);
|
|
1039
|
+
if (!warCodes.includes(warCode)) {
|
|
1040
|
+
return { code: 3, message: 'War code invalid.' };
|
|
1041
|
+
}
|
|
1042
|
+
var lenOfN = n.length;
|
|
1043
|
+
var lenOfWc = warCode.length;
|
|
1044
|
+
if (lenOfN + lenOfWc > 7) {
|
|
1045
|
+
return { code: 4, message: 'File number length should not be greater 7.' };
|
|
1046
|
+
}
|
|
1047
|
+
return null;
|
|
1048
|
+
};
|
|
1049
|
+
StringAusFunc.validateTFN = function (n) {
|
|
1050
|
+
if (!n) {
|
|
1051
|
+
return null;
|
|
1052
|
+
}
|
|
1053
|
+
var tfn = n.replace(/\s+/g, '').replace(/[-]/g, '');
|
|
1054
|
+
var isNumber = /^[0-9]+$/.test(tfn);
|
|
1055
|
+
if (!isNumber) {
|
|
1056
|
+
return { code: 1, message: 'Invalid TFN, only numbers are allowed.' };
|
|
1057
|
+
}
|
|
1058
|
+
var length = tfn.length;
|
|
1059
|
+
if (length !== 9) {
|
|
1060
|
+
return {
|
|
1061
|
+
code: 2, message: 'Invalid TFN, must have 9 digits.'
|
|
1062
|
+
};
|
|
1063
|
+
}
|
|
1064
|
+
var digits = tfn.split('').map(function (d) { return parseInt(d); });
|
|
1065
|
+
var sum = (digits[0] * 1)
|
|
1066
|
+
+ (digits[1] * 4)
|
|
1067
|
+
+ (digits[2] * 3)
|
|
1068
|
+
+ (digits[3] * 7)
|
|
1069
|
+
+ (digits[4] * 5)
|
|
1070
|
+
+ (digits[5] * 8)
|
|
1071
|
+
+ (digits[6] * 6)
|
|
1072
|
+
+ (digits[7] * 9)
|
|
1073
|
+
+ (digits[8] * 10);
|
|
1074
|
+
var remainder = sum % 11;
|
|
1075
|
+
var valid = remainder === 0;
|
|
1076
|
+
if (!valid) {
|
|
1077
|
+
return { code: 3, message: 'Checksum is incorrect.' };
|
|
1078
|
+
}
|
|
1079
|
+
return null;
|
|
1080
|
+
};
|
|
1081
|
+
StringAusFunc.addWeighted = function (p, v, i) {
|
|
1082
|
+
return p + v * StringAusFunc.weights[i];
|
|
1083
|
+
};
|
|
1084
|
+
StringAusFunc.addAcnWeighted = function (p, v, i) {
|
|
1085
|
+
return p + v * StringAusFunc.acnWeights[i];
|
|
1086
|
+
};
|
|
1087
|
+
StringAusFunc.generateLookup = function () {
|
|
1088
|
+
var ns = [];
|
|
1089
|
+
for (var i = 0; i < 10; ++i) {
|
|
1090
|
+
ns[i * 19 % 89] = i;
|
|
1091
|
+
}
|
|
1092
|
+
return ns;
|
|
1093
|
+
};
|
|
1094
|
+
StringAusFunc.validateABN = function (abn) {
|
|
1095
|
+
if (!abn) {
|
|
1096
|
+
return null;
|
|
1097
|
+
}
|
|
1098
|
+
var digits = abn.replace(/[^\d]/g, '').split('').map(Number);
|
|
1099
|
+
if (digits.length !== 11) {
|
|
1100
|
+
return { code: 1, message: 'Expect 11-digit.' };
|
|
1101
|
+
}
|
|
1102
|
+
digits[0] -= 1;
|
|
1103
|
+
var sum = digits.reduce(StringAusFunc.addWeighted, 0);
|
|
1104
|
+
if (sum % 89 === 0) {
|
|
1105
|
+
return null;
|
|
1106
|
+
}
|
|
1107
|
+
digits[0] += 1;
|
|
1108
|
+
var sum1 = sum - digits[10] * StringAusFunc.weights[10];
|
|
1109
|
+
var digit = StringAusFunc.suggestLookup[89 - sum1 % 89];
|
|
1110
|
+
if (digit !== undefined) {
|
|
1111
|
+
return {
|
|
1112
|
+
code: 2,
|
|
1113
|
+
message: 'Checksum1 is incorrect.'
|
|
1114
|
+
};
|
|
1115
|
+
}
|
|
1116
|
+
else {
|
|
1117
|
+
var sum2 = sum1 - digits[9] * StringAusFunc.weights[9];
|
|
1118
|
+
for (var i = 0; i < 10; ++i) {
|
|
1119
|
+
sum1 = sum2 + i * StringAusFunc.weights[9];
|
|
1120
|
+
digit = StringAusFunc.suggestLookup[89 - sum1 % 89];
|
|
1121
|
+
if (digit !== undefined) {
|
|
1122
|
+
return {
|
|
1123
|
+
code: 3,
|
|
1124
|
+
message: 'Checksum2 is incorrect.'
|
|
1125
|
+
};
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
return null;
|
|
1130
|
+
};
|
|
1131
|
+
StringAusFunc.validateACN = function (acn) {
|
|
1132
|
+
if (!acn) {
|
|
1133
|
+
return null;
|
|
1134
|
+
}
|
|
1135
|
+
var digits = acn.replace(/[^\d]/g, '').split('').map(Number);
|
|
1136
|
+
console.log(digits);
|
|
1137
|
+
if (digits.length !== 9) {
|
|
1138
|
+
return { code: 1, message: 'Expect 9-digit.' };
|
|
1139
|
+
}
|
|
1140
|
+
var sum = digits.slice(0, 8).reduce(StringAusFunc.addAcnWeighted, 0);
|
|
1141
|
+
var lastDigit = 10 - sum % 10;
|
|
1142
|
+
if (lastDigit === digits[8]) {
|
|
1143
|
+
return null;
|
|
1144
|
+
}
|
|
1145
|
+
return {
|
|
1146
|
+
code: 2,
|
|
1147
|
+
message: 'Checksum is incorrect.'
|
|
1148
|
+
};
|
|
1149
|
+
};
|
|
1150
|
+
return StringAusFunc;
|
|
1151
|
+
}());
|
|
1152
|
+
//thanks to https://github.com/sidorares/australian-business-number/blob/0591475f5978fd122b472edcdc7efe6d96d56f26/index.js
|
|
1153
|
+
StringAusFunc.acnWeights = [8, 7, 6, 5, 4, 3, 2, 1];
|
|
1154
|
+
StringAusFunc.weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
|
|
1155
|
+
StringAusFunc.suggestLookup = StringAusFunc.generateLookup();
|
|
1156
|
+
|
|
1157
|
+
var StringFunc = /** @class */ (function () {
|
|
1158
|
+
function StringFunc() {
|
|
1159
|
+
}
|
|
1160
|
+
/**
|
|
1161
|
+
* Up to 2 letters. For John Smith, returns JS, for Huang, Zijian, returns ZH
|
|
1162
|
+
* @param s
|
|
1163
|
+
*/
|
|
1164
|
+
StringFunc.getAbbr = function (s) {
|
|
1165
|
+
if (!s) {
|
|
1166
|
+
return '';
|
|
1167
|
+
}
|
|
1168
|
+
var sArray = s.split(/[\s,]+/);
|
|
1169
|
+
var comma = s.indexOf(',') >= 0;
|
|
1170
|
+
if (sArray.length === 1) {
|
|
1171
|
+
return sArray[0][0];
|
|
1172
|
+
}
|
|
1173
|
+
return comma ? sArray[1][0] + sArray[0][0] : sArray[0][0] + sArray[1][0];
|
|
1174
|
+
};
|
|
1175
|
+
/**
|
|
1176
|
+
* A substring with line breaks replaced by space.
|
|
1177
|
+
* @param s
|
|
1178
|
+
* @param length
|
|
1179
|
+
* @returns result, or empty string if the input is empty, null or undefined
|
|
1180
|
+
*/
|
|
1181
|
+
StringFunc.getOneLineDigest = function (s, length) {
|
|
1182
|
+
if (!s) {
|
|
1183
|
+
return '';
|
|
1184
|
+
}
|
|
1185
|
+
var ss = s.substring(0, length);
|
|
1186
|
+
var st = ss.replace(new RegExp('\n', 'g'), ' ') + ((s.length > length) ? '...' : '');
|
|
1187
|
+
return st.trim();
|
|
1188
|
+
};
|
|
1189
|
+
/**
|
|
1190
|
+
* Remove line breaks and econde with encodeURI() so the data could be saved in Azure as meta. If the string is truncated, the return will have ... suffix.
|
|
1191
|
+
* @param s
|
|
1192
|
+
* @param length
|
|
1193
|
+
* @returns result, or empty string if the input is empty, null or undefined
|
|
1194
|
+
*/
|
|
1195
|
+
StringFunc.getOneLineDigestOfHtml = function (s, length) {
|
|
1196
|
+
if (!s) {
|
|
1197
|
+
return '';
|
|
1198
|
+
}
|
|
1199
|
+
var ss = s.substring(0, length);
|
|
1200
|
+
var st = ss.replace(new RegExp('\n', 'g'), ' ') + ((s.length > length) ? '...' : '');
|
|
1201
|
+
return encodeURI(st.trim()); //need to encode in order to save as meta in Azure.
|
|
1202
|
+
};
|
|
1203
|
+
/**
|
|
1204
|
+
* Pad number with zero
|
|
1205
|
+
* @param num
|
|
1206
|
+
* @param size
|
|
1207
|
+
* @returns
|
|
1208
|
+
*/
|
|
1209
|
+
StringFunc.pad = function (num, size) {
|
|
1210
|
+
if (num == null) {
|
|
1211
|
+
return '';
|
|
1212
|
+
}
|
|
1213
|
+
var s = num + '';
|
|
1214
|
+
while (s.length < size) {
|
|
1215
|
+
s = '0' + s;
|
|
1216
|
+
}
|
|
1217
|
+
return s;
|
|
1218
|
+
};
|
|
1219
|
+
/**
|
|
1220
|
+
* get plain text of HTML content
|
|
1221
|
+
* @param s
|
|
1222
|
+
* @returns result. If input is empty, null, or undefined, return the same.
|
|
1223
|
+
*/
|
|
1224
|
+
StringFunc.getHtmlPlainText = function (s) {
|
|
1225
|
+
if (!s) {
|
|
1226
|
+
return null;
|
|
1227
|
+
}
|
|
1228
|
+
var parser = new DOMParser();
|
|
1229
|
+
var html = parser.parseFromString(s, 'text/html');
|
|
1230
|
+
return html.body.textContent;
|
|
1231
|
+
};
|
|
1232
|
+
/**
|
|
1233
|
+
*
|
|
1234
|
+
* @param s
|
|
1235
|
+
* @returns result. If input is empty, null, or undefined, return the same.
|
|
1236
|
+
*/
|
|
1237
|
+
StringFunc.capitalizeWords = function (s) {
|
|
1238
|
+
if (!s) {
|
|
1239
|
+
return s;
|
|
1240
|
+
}
|
|
1241
|
+
return s.replace(/(?:^|\s)\S/g, function (a) { return a.toUpperCase(); });
|
|
1242
|
+
};
|
|
1243
|
+
StringFunc.validateEmail = function (email) {
|
|
1244
|
+
if (!email) {
|
|
1245
|
+
return true;
|
|
1246
|
+
}
|
|
1247
|
+
var re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
1248
|
+
return re.test(email.toLowerCase());
|
|
1249
|
+
};
|
|
1250
|
+
return StringFunc;
|
|
1251
|
+
}());
|
|
1252
|
+
|
|
1253
|
+
// import { v5 as uuid } from 'uuid/v5 causes ERROR in src / app / _func / helperFunc.ts(1, 10): error TS2305: Module '"C:/VSProjects/ApsCloudTrunk/APS.WebPos.NGCli/NGSource/node_modules/@types/uuid/v5"' has no exported member 'v5'
|
|
1254
|
+
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/28439
|
|
1255
|
+
var UuidFunc = /** @class */ (function () {
|
|
1256
|
+
function UuidFunc() {
|
|
1257
|
+
}
|
|
1258
|
+
/**
|
|
1259
|
+
* 36 UUID string including 4 hyphens. MySql stores GUID as 36 bytes anyway rather than 16bytes.
|
|
1260
|
+
*/
|
|
1261
|
+
UuidFunc.newUUID = function () {
|
|
1262
|
+
// return uuid('medilink.com.au', 'apscloud');
|
|
1263
|
+
return uuid.v4();
|
|
1264
|
+
};
|
|
1265
|
+
UuidFunc.newUUIDStartWith0 = function () {
|
|
1266
|
+
var s = uuid.v4();
|
|
1267
|
+
return '0000' + s.slice(4);
|
|
1268
|
+
};
|
|
1269
|
+
return UuidFunc;
|
|
1270
|
+
}());
|
|
1271
|
+
|
|
1272
|
+
/*
|
|
1273
|
+
* Public API Surface of nmce-func
|
|
1274
|
+
*/
|
|
1275
|
+
|
|
1276
|
+
/**
|
|
1277
|
+
* Generated bundle index. Do not edit.
|
|
1278
|
+
*/
|
|
1279
|
+
|
|
1280
|
+
exports.AddressFunc = AddressFunc;
|
|
1281
|
+
exports.AuthenticationService = AuthenticationService;
|
|
1282
|
+
exports.CurrencyFunc = CurrencyFunc;
|
|
1283
|
+
exports.DateFunc = DateFunc;
|
|
1284
|
+
exports.HtmlPrintFunc = HtmlPrintFunc;
|
|
1285
|
+
exports.JavaScriptFunc = JavaScriptFunc;
|
|
1286
|
+
exports.JsonFunc = JsonFunc;
|
|
1287
|
+
exports.StringAusFunc = StringAusFunc;
|
|
1288
|
+
exports.StringFunc = StringFunc;
|
|
1289
|
+
exports.UuidFunc = UuidFunc;
|
|
1290
|
+
|
|
1291
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
1292
|
+
|
|
1293
|
+
})));
|
|
1294
|
+
//# sourceMappingURL=nmce-func.umd.js.map
|