@develia/commons 0.2.11 → 0.2.12
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/package.json +1 -1
- package/src/functions.js +11 -19
- package/src/functions.js.map +1 -1
- package/src/functions.ts +10 -8
- package/src/index.js +1 -0
- package/src/timer.js +32 -8
- package/src/timer.js.map +1 -1
- package/src/timer.ts +42 -12
- package/src/timespan.js +132 -0
- package/src/timespan.js.map +1 -0
- package/src/timespan.ts +166 -0
- package/tsconfig.json +1 -1
package/package.json
CHANGED
package/src/functions.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
// noinspection JSUnusedGlobalSymbols
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
export function isString(value) {
|
|
12
3
|
return typeof value === 'string';
|
|
13
4
|
}
|
|
@@ -38,17 +29,18 @@ export function isBigInt(value) {
|
|
|
38
29
|
export function isSymbol(value) {
|
|
39
30
|
return typeof value === 'symbol';
|
|
40
31
|
}
|
|
32
|
+
export function isNullOrUndefined(value) {
|
|
33
|
+
return value === null || typeof value === 'undefined';
|
|
34
|
+
}
|
|
41
35
|
export function isEmpty(value) {
|
|
42
|
-
return (isArray(value) && value.length === 0) ||
|
|
43
|
-
(
|
|
44
|
-
|
|
45
|
-
isUndefined(value);
|
|
36
|
+
return (Array.isArray(value) && value.length === 0) ||
|
|
37
|
+
(typeof value === 'string' && value === '') ||
|
|
38
|
+
value === null || typeof value === 'undefined';
|
|
46
39
|
}
|
|
47
40
|
export function isEmptyOrWhitespace(value) {
|
|
48
|
-
return (isArray(value) && value.length === 0) ||
|
|
49
|
-
(
|
|
50
|
-
|
|
51
|
-
isUndefined(value);
|
|
41
|
+
return (Array.isArray(value) && value.length === 0) ||
|
|
42
|
+
(typeof value === 'string' && value.trim() === '') ||
|
|
43
|
+
value === null || typeof value === 'undefined';
|
|
52
44
|
}
|
|
53
45
|
export function ajaxSubmit(selectorOrElement) {
|
|
54
46
|
const form = typeof selectorOrElement === 'string'
|
|
@@ -91,11 +83,11 @@ export function ajaxSubmission(selectorOrElement, onSuccess = null, onFailure =
|
|
|
91
83
|
if (!(form instanceof HTMLFormElement)) {
|
|
92
84
|
return;
|
|
93
85
|
}
|
|
94
|
-
form.addEventListener('submit', (event) =>
|
|
86
|
+
form.addEventListener('submit', async (event) => {
|
|
95
87
|
var _a;
|
|
96
88
|
event.preventDefault();
|
|
97
89
|
(_a = ajaxSubmit(form)) === null || _a === void 0 ? void 0 : _a.then(onSuccess).catch(onFailure);
|
|
98
|
-
})
|
|
90
|
+
});
|
|
99
91
|
}
|
|
100
92
|
export function deepClone(obj) {
|
|
101
93
|
if (obj === null || typeof obj !== 'object') {
|
package/src/functions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"functions.js","sourceRoot":"","sources":["functions.ts"],"names":[],"mappings":"AAAA,qCAAqC
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["functions.ts"],"names":[],"mappings":"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"}
|
package/src/functions.ts
CHANGED
|
@@ -40,18 +40,20 @@ export function isSymbol(value: any): value is symbol {
|
|
|
40
40
|
return typeof value === 'symbol';
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
export function isNullOrUndefined(value: any) {
|
|
44
|
+
return value === null || typeof value === 'undefined';
|
|
45
|
+
}
|
|
46
|
+
|
|
43
47
|
export function isEmpty(value: any): boolean {
|
|
44
|
-
return (isArray(value) && value.length === 0) ||
|
|
45
|
-
(
|
|
46
|
-
|
|
47
|
-
isUndefined(value);
|
|
48
|
+
return (Array.isArray(value) && value.length === 0) ||
|
|
49
|
+
(typeof value === 'string' && value === '') ||
|
|
50
|
+
value === null || typeof value === 'undefined';
|
|
48
51
|
}
|
|
49
52
|
|
|
50
53
|
export function isEmptyOrWhitespace(value: any): boolean {
|
|
51
|
-
return (isArray(value) && value.length === 0) ||
|
|
52
|
-
(
|
|
53
|
-
|
|
54
|
-
isUndefined(value);
|
|
54
|
+
return (Array.isArray(value) && value.length === 0) ||
|
|
55
|
+
(typeof value === 'string' && value.trim() === '') ||
|
|
56
|
+
value === null || typeof value === 'undefined';
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
|
package/src/index.js
CHANGED
package/src/timer.js
CHANGED
|
@@ -4,19 +4,43 @@ export default class Timer {
|
|
|
4
4
|
* @param interval Seconds between calls
|
|
5
5
|
*/
|
|
6
6
|
constructor(callback, interval) {
|
|
7
|
-
this.
|
|
8
|
-
this.
|
|
9
|
-
this.
|
|
7
|
+
this._callback = callback;
|
|
8
|
+
this._interval = interval;
|
|
9
|
+
this._intervalId = null;
|
|
10
|
+
}
|
|
11
|
+
get running() {
|
|
12
|
+
return this._intervalId !== null && this._intervalId !== undefined;
|
|
13
|
+
}
|
|
14
|
+
get interval() {
|
|
15
|
+
return this._interval;
|
|
16
|
+
}
|
|
17
|
+
set interval(value) {
|
|
18
|
+
if (value != this._interval) {
|
|
19
|
+
this._interval = value;
|
|
20
|
+
if (this.running)
|
|
21
|
+
this.restart();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get callback() {
|
|
25
|
+
return this._callback;
|
|
26
|
+
}
|
|
27
|
+
set callback(value) {
|
|
28
|
+
if (value != this._callback) {
|
|
29
|
+
this._callback = value;
|
|
30
|
+
}
|
|
10
31
|
}
|
|
11
32
|
start() {
|
|
12
|
-
if (this.
|
|
13
|
-
this.
|
|
33
|
+
if (this._intervalId === null) {
|
|
34
|
+
this._intervalId = setInterval(() => {
|
|
35
|
+
if (this._callback != null)
|
|
36
|
+
this._callback();
|
|
37
|
+
}, this._interval);
|
|
14
38
|
}
|
|
15
39
|
}
|
|
16
40
|
stop() {
|
|
17
|
-
if (this.
|
|
18
|
-
clearInterval(this.
|
|
19
|
-
this.
|
|
41
|
+
if (this._intervalId !== null) {
|
|
42
|
+
clearInterval(this._intervalId);
|
|
43
|
+
this._intervalId = null;
|
|
20
44
|
}
|
|
21
45
|
}
|
|
22
46
|
restart() {
|
package/src/timer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer.js","sourceRoot":"","sources":["timer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK;IAMtB;;;OAGG;IACH,YAAY,
|
|
1
|
+
{"version":3,"file":"timer.js","sourceRoot":"","sources":["timer.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK;IAMtB;;;OAGG;IACH,YAAY,QAAoB,EAAE,QAAgB;QAC9C,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC;IACvE,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAa;QACtB,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,IAAI,CAAC,OAAO;gBACZ,IAAI,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ,CAAC,KAAiB;QAC1B,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,CAAC;IACL,CAAC;IAGD,KAAK;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;gBAChC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI;oBACtB,IAAI,CAAC,SAAS,EAAE,CAAC;YACzB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,CAAC;IACL,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAC5B,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;CACJ"}
|
package/src/timer.ts
CHANGED
|
@@ -1,29 +1,59 @@
|
|
|
1
1
|
export default class Timer {
|
|
2
2
|
|
|
3
|
-
private
|
|
4
|
-
private
|
|
5
|
-
private
|
|
3
|
+
private _callback: () => void;
|
|
4
|
+
private _interval: number;
|
|
5
|
+
private _intervalId: number | null;
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* @param callback Callback
|
|
9
9
|
* @param interval Seconds between calls
|
|
10
10
|
*/
|
|
11
|
-
constructor(callback:
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
11
|
+
constructor(callback: () => void, interval: number) {
|
|
12
|
+
this._callback = callback;
|
|
13
|
+
this._interval = interval;
|
|
14
|
+
this._intervalId = null;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
get running(): boolean {
|
|
18
|
+
return this._intervalId !== null && this._intervalId !== undefined;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get interval(): number {
|
|
22
|
+
return this._interval;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set interval(value: number) {
|
|
26
|
+
if (value != this._interval) {
|
|
27
|
+
this._interval = value;
|
|
28
|
+
if (this.running)
|
|
29
|
+
this.restart();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
get callback(): () => void {
|
|
34
|
+
return this._callback;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
set callback(value: () => void) {
|
|
38
|
+
if (value != this._callback) {
|
|
39
|
+
this._callback = value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
17
44
|
start(): void {
|
|
18
|
-
if (this.
|
|
19
|
-
this.
|
|
45
|
+
if (this._intervalId === null) {
|
|
46
|
+
this._intervalId = setInterval(() => {
|
|
47
|
+
if (this._callback != null)
|
|
48
|
+
this._callback();
|
|
49
|
+
}, this._interval);
|
|
20
50
|
}
|
|
21
51
|
}
|
|
22
52
|
|
|
23
53
|
stop(): void {
|
|
24
|
-
if (this.
|
|
25
|
-
clearInterval(this.
|
|
26
|
-
this.
|
|
54
|
+
if (this._intervalId !== null) {
|
|
55
|
+
clearInterval(this._intervalId);
|
|
56
|
+
this._intervalId = null;
|
|
27
57
|
}
|
|
28
58
|
}
|
|
29
59
|
|
package/src/timespan.js
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export default class TimeSpan {
|
|
2
|
+
constructor(milliseconds) {
|
|
3
|
+
this._milliseconds = milliseconds;
|
|
4
|
+
}
|
|
5
|
+
// Obtener el intervalo de tiempo en milisegundos
|
|
6
|
+
milliseconds() {
|
|
7
|
+
return this._milliseconds;
|
|
8
|
+
}
|
|
9
|
+
// Obtener el intervalo de tiempo en segundos
|
|
10
|
+
seconds() {
|
|
11
|
+
return this._milliseconds / 1000;
|
|
12
|
+
}
|
|
13
|
+
// Obtener el intervalo de tiempo en minutos
|
|
14
|
+
minutes() {
|
|
15
|
+
return this._milliseconds / (1000 * 60);
|
|
16
|
+
}
|
|
17
|
+
// Obtener el intervalo de tiempo en horas
|
|
18
|
+
hours() {
|
|
19
|
+
return this._milliseconds / (1000 * 60 * 60);
|
|
20
|
+
}
|
|
21
|
+
// Obtener el intervalo de tiempo en días
|
|
22
|
+
days() {
|
|
23
|
+
return this._milliseconds / (1000 * 60 * 60 * 24);
|
|
24
|
+
}
|
|
25
|
+
// Obtener el intervalo de tiempo en semanas
|
|
26
|
+
weeks() {
|
|
27
|
+
return this._milliseconds / (1000 * 60 * 60 * 24 * 7);
|
|
28
|
+
}
|
|
29
|
+
// Constructor estático para crear un TimeSpan desde milisegundos
|
|
30
|
+
static fromMilliseconds(milliseconds) {
|
|
31
|
+
return new TimeSpan(milliseconds);
|
|
32
|
+
}
|
|
33
|
+
// Constructor estático para crear un TimeSpan desde segundos
|
|
34
|
+
static fromSeconds(seconds) {
|
|
35
|
+
return new TimeSpan(seconds * 1000);
|
|
36
|
+
}
|
|
37
|
+
// Constructor estático para crear un TimeSpan desde minutos
|
|
38
|
+
static fromMinutes(minutes) {
|
|
39
|
+
return new TimeSpan(minutes * 1000 * 60);
|
|
40
|
+
}
|
|
41
|
+
// Constructor estático para crear un TimeSpan desde horas
|
|
42
|
+
static fromHours(hours) {
|
|
43
|
+
return new TimeSpan(hours * 1000 * 60 * 60);
|
|
44
|
+
}
|
|
45
|
+
// Constructor estático para crear un TimeSpan desde días
|
|
46
|
+
static fromDays(days) {
|
|
47
|
+
return new TimeSpan(days * 1000 * 60 * 60 * 24);
|
|
48
|
+
}
|
|
49
|
+
// Constructor estático para crear un TimeSpan desde semanas
|
|
50
|
+
static fromWeeks(weeks) {
|
|
51
|
+
return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
52
|
+
}
|
|
53
|
+
// Añadir un intervalo de tiempo
|
|
54
|
+
addMilliseconds(milliseconds) {
|
|
55
|
+
return new TimeSpan(this._milliseconds + milliseconds);
|
|
56
|
+
}
|
|
57
|
+
addSeconds(seconds) {
|
|
58
|
+
return this.addMilliseconds(seconds * 1000);
|
|
59
|
+
}
|
|
60
|
+
addMinutes(minutes) {
|
|
61
|
+
return this.addMilliseconds(minutes * 1000 * 60);
|
|
62
|
+
}
|
|
63
|
+
addHours(hours) {
|
|
64
|
+
return this.addMilliseconds(hours * 1000 * 60 * 60);
|
|
65
|
+
}
|
|
66
|
+
addDays(days) {
|
|
67
|
+
return this.addMilliseconds(days * 1000 * 60 * 60 * 24);
|
|
68
|
+
}
|
|
69
|
+
addWeeks(weeks) {
|
|
70
|
+
return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
71
|
+
}
|
|
72
|
+
// Restar un intervalo de tiempo
|
|
73
|
+
subtractMilliseconds(milliseconds) {
|
|
74
|
+
return new TimeSpan(this._milliseconds - milliseconds);
|
|
75
|
+
}
|
|
76
|
+
subtractSeconds(seconds) {
|
|
77
|
+
return this.subtractMilliseconds(seconds * 1000);
|
|
78
|
+
}
|
|
79
|
+
subtractMinutes(minutes) {
|
|
80
|
+
return this.subtractMilliseconds(minutes * 1000 * 60);
|
|
81
|
+
}
|
|
82
|
+
subtractHours(hours) {
|
|
83
|
+
return this.subtractMilliseconds(hours * 1000 * 60 * 60);
|
|
84
|
+
}
|
|
85
|
+
subtractDays(days) {
|
|
86
|
+
return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);
|
|
87
|
+
}
|
|
88
|
+
subtractWeeks(weeks) {
|
|
89
|
+
return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
90
|
+
}
|
|
91
|
+
// Añadir otro TimeSpan
|
|
92
|
+
add(other) {
|
|
93
|
+
return new TimeSpan(this._milliseconds + other._milliseconds);
|
|
94
|
+
}
|
|
95
|
+
// Restar otro TimeSpan
|
|
96
|
+
subtract(other) {
|
|
97
|
+
return new TimeSpan(this._milliseconds - other._milliseconds);
|
|
98
|
+
}
|
|
99
|
+
// Añadir un intervalo de tiempo a una fecha
|
|
100
|
+
addTo(date) {
|
|
101
|
+
return new Date(date.getTime() + this._milliseconds);
|
|
102
|
+
}
|
|
103
|
+
// Restar un intervalo de tiempo de una fecha
|
|
104
|
+
subtractFrom(date) {
|
|
105
|
+
return new Date(date.getTime() - this._milliseconds);
|
|
106
|
+
}
|
|
107
|
+
format(format = 'hh:mm:ss') {
|
|
108
|
+
const formatLower = format.toLowerCase();
|
|
109
|
+
const hasHours = formatLower.includes("h");
|
|
110
|
+
const hasMinutes = formatLower.includes("m");
|
|
111
|
+
let hours = 0, minutes = 0, seconds = Math.floor(this._milliseconds / 1000);
|
|
112
|
+
if (hasHours) {
|
|
113
|
+
hours = Math.floor(seconds / 3600);
|
|
114
|
+
seconds -= hours * 3600;
|
|
115
|
+
}
|
|
116
|
+
if (hasMinutes) {
|
|
117
|
+
minutes = Math.floor(seconds / 60);
|
|
118
|
+
seconds -= minutes * 60;
|
|
119
|
+
}
|
|
120
|
+
const hoursPadded = String(hours).padStart(2, '0');
|
|
121
|
+
const minutesPadded = String(minutes).padStart(2, '0');
|
|
122
|
+
const secondsPadded = String(seconds).padStart(2, '0');
|
|
123
|
+
return formatLower
|
|
124
|
+
.replace('hh', hoursPadded)
|
|
125
|
+
.replace('h', hours.toString())
|
|
126
|
+
.replace('mm', minutesPadded)
|
|
127
|
+
.replace('m', minutes.toString())
|
|
128
|
+
.replace('ss', secondsPadded)
|
|
129
|
+
.replace('s', seconds.toString());
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=timespan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timespan.js","sourceRoot":"","sources":["timespan.ts"],"names":[],"mappings":"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"}
|
package/src/timespan.ts
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
export default class TimeSpan {
|
|
2
|
+
private readonly _milliseconds: number;
|
|
3
|
+
|
|
4
|
+
constructor(milliseconds: number) {
|
|
5
|
+
this._milliseconds = milliseconds;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// Obtener el intervalo de tiempo en milisegundos
|
|
9
|
+
milliseconds(): number {
|
|
10
|
+
return this._milliseconds;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Obtener el intervalo de tiempo en segundos
|
|
14
|
+
seconds(): number {
|
|
15
|
+
return this._milliseconds / 1000;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Obtener el intervalo de tiempo en minutos
|
|
19
|
+
minutes(): number {
|
|
20
|
+
return this._milliseconds / (1000 * 60);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// Obtener el intervalo de tiempo en horas
|
|
24
|
+
hours(): number {
|
|
25
|
+
return this._milliseconds / (1000 * 60 * 60);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Obtener el intervalo de tiempo en días
|
|
29
|
+
days(): number {
|
|
30
|
+
return this._milliseconds / (1000 * 60 * 60 * 24);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Obtener el intervalo de tiempo en semanas
|
|
34
|
+
weeks(): number {
|
|
35
|
+
return this._milliseconds / (1000 * 60 * 60 * 24 * 7);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Constructor estático para crear un TimeSpan desde milisegundos
|
|
39
|
+
static fromMilliseconds(milliseconds: number): TimeSpan {
|
|
40
|
+
return new TimeSpan(milliseconds);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Constructor estático para crear un TimeSpan desde segundos
|
|
44
|
+
static fromSeconds(seconds: number): TimeSpan {
|
|
45
|
+
return new TimeSpan(seconds * 1000);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Constructor estático para crear un TimeSpan desde minutos
|
|
49
|
+
static fromMinutes(minutes: number): TimeSpan {
|
|
50
|
+
return new TimeSpan(minutes * 1000 * 60);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Constructor estático para crear un TimeSpan desde horas
|
|
54
|
+
static fromHours(hours: number): TimeSpan {
|
|
55
|
+
return new TimeSpan(hours * 1000 * 60 * 60);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Constructor estático para crear un TimeSpan desde días
|
|
59
|
+
static fromDays(days: number): TimeSpan {
|
|
60
|
+
return new TimeSpan(days * 1000 * 60 * 60 * 24);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Constructor estático para crear un TimeSpan desde semanas
|
|
64
|
+
static fromWeeks(weeks: number): TimeSpan {
|
|
65
|
+
return new TimeSpan(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Añadir un intervalo de tiempo
|
|
69
|
+
addMilliseconds(milliseconds: number): TimeSpan {
|
|
70
|
+
return new TimeSpan(this._milliseconds + milliseconds);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
addSeconds(seconds: number): TimeSpan {
|
|
74
|
+
return this.addMilliseconds(seconds * 1000);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
addMinutes(minutes: number): TimeSpan {
|
|
78
|
+
return this.addMilliseconds(minutes * 1000 * 60);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
addHours(hours: number): TimeSpan {
|
|
82
|
+
return this.addMilliseconds(hours * 1000 * 60 * 60);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
addDays(days: number): TimeSpan {
|
|
86
|
+
return this.addMilliseconds(days * 1000 * 60 * 60 * 24);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
addWeeks(weeks: number): TimeSpan {
|
|
90
|
+
return this.addMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Restar un intervalo de tiempo
|
|
94
|
+
subtractMilliseconds(milliseconds: number): TimeSpan {
|
|
95
|
+
return new TimeSpan(this._milliseconds - milliseconds);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
subtractSeconds(seconds: number): TimeSpan {
|
|
99
|
+
return this.subtractMilliseconds(seconds * 1000);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
subtractMinutes(minutes: number): TimeSpan {
|
|
103
|
+
return this.subtractMilliseconds(minutes * 1000 * 60);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
subtractHours(hours: number): TimeSpan {
|
|
107
|
+
return this.subtractMilliseconds(hours * 1000 * 60 * 60);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
subtractDays(days: number): TimeSpan {
|
|
111
|
+
return this.subtractMilliseconds(days * 1000 * 60 * 60 * 24);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
subtractWeeks(weeks: number): TimeSpan {
|
|
115
|
+
return this.subtractMilliseconds(weeks * 1000 * 60 * 60 * 24 * 7);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Añadir otro TimeSpan
|
|
119
|
+
add(other: TimeSpan): TimeSpan {
|
|
120
|
+
return new TimeSpan(this._milliseconds + other._milliseconds);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Restar otro TimeSpan
|
|
124
|
+
subtract(other: TimeSpan): TimeSpan {
|
|
125
|
+
return new TimeSpan(this._milliseconds - other._milliseconds);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Añadir un intervalo de tiempo a una fecha
|
|
129
|
+
addTo(date: Date): Date {
|
|
130
|
+
return new Date(date.getTime() + this._milliseconds);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Restar un intervalo de tiempo de una fecha
|
|
134
|
+
subtractFrom(date: Date): Date {
|
|
135
|
+
return new Date(date.getTime() - this._milliseconds);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
format(format: string = 'hh:mm:ss'): string {
|
|
139
|
+
const formatLower = format.toLowerCase();
|
|
140
|
+
const hasHours = formatLower.includes("h");
|
|
141
|
+
const hasMinutes = formatLower.includes("m");
|
|
142
|
+
|
|
143
|
+
let hours = 0, minutes = 0, seconds = Math.floor(this._milliseconds / 1000);
|
|
144
|
+
|
|
145
|
+
if (hasHours) {
|
|
146
|
+
hours = Math.floor(seconds / 3600);
|
|
147
|
+
seconds -= hours * 3600;
|
|
148
|
+
}
|
|
149
|
+
if (hasMinutes) {
|
|
150
|
+
minutes = Math.floor(seconds / 60);
|
|
151
|
+
seconds -= minutes * 60;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
const hoursPadded = String(hours).padStart(2, '0');
|
|
155
|
+
const minutesPadded = String(minutes).padStart(2, '0');
|
|
156
|
+
const secondsPadded = String(seconds).padStart(2, '0');
|
|
157
|
+
|
|
158
|
+
return formatLower
|
|
159
|
+
.replace('hh', hoursPadded)
|
|
160
|
+
.replace('h', hours.toString())
|
|
161
|
+
.replace('mm', minutesPadded)
|
|
162
|
+
.replace('m', minutes.toString())
|
|
163
|
+
.replace('ss', secondsPadded)
|
|
164
|
+
.replace('s', seconds.toString());
|
|
165
|
+
}
|
|
166
|
+
}
|