@zajno/common 2.2.10 → 2.2.11
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.
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface IMonthIndex {
|
|
2
|
+
month: number;
|
|
3
|
+
}
|
|
4
|
+
export interface IWeekIndex extends IMonthIndex {
|
|
5
|
+
week: number;
|
|
6
|
+
}
|
|
7
|
+
export interface IDayIndex extends IWeekIndex {
|
|
8
|
+
day: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Helps with converting sequential index to zero-based month, week, day index.
|
|
12
|
+
*
|
|
13
|
+
* Allows to use any number of days per week, not just 7. Also one can set any number of weeks per month (but it will be used globally).
|
|
14
|
+
*
|
|
15
|
+
* To update the value, either set `raw` property or use `set` method.
|
|
16
|
+
*
|
|
17
|
+
* Usage case: some ordered sequence of items, each has its own index, and you want to distribute them by months, weeks and days, knowing the number of items assigned per week.
|
|
18
|
+
*/
|
|
19
|
+
export declare class CalendarIndex implements IDayIndex {
|
|
20
|
+
readonly perWeek: number;
|
|
21
|
+
static WEEKS_PER_MONTH: number;
|
|
22
|
+
/** sequential index */
|
|
23
|
+
raw: number;
|
|
24
|
+
constructor(perWeek?: number);
|
|
25
|
+
get perMonth(): number;
|
|
26
|
+
/** zero-based month index based on `perWeek` property */
|
|
27
|
+
get month(): number;
|
|
28
|
+
/** zero-based week index based on `perWeek` property */
|
|
29
|
+
get week(): number;
|
|
30
|
+
get fullWeek(): number;
|
|
31
|
+
get day(): number;
|
|
32
|
+
set(month: number, week?: number, day?: number): this;
|
|
33
|
+
toIndex(): IDayIndex;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=calendarIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendarIndex.d.ts","sourceRoot":"","sources":["../../src/dates/calendarIndex.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC3C,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,UAAU;IACzC,GAAG,EAAE,MAAM,CAAC;CACf;AAGD;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,SAAS;IAO/B,QAAQ,CAAC,OAAO,EAAE,MAAM;IALpC,MAAM,CAAC,eAAe,SAAK;IAE3B,uBAAuB;IAChB,GAAG,EAAE,MAAM,CAAK;gBAEF,OAAO,GAAE,MAAU;IAExC,IAAW,QAAQ,WAA2D;IAE9E,yDAAyD;IACzD,IAAW,KAAK,WAAmD;IAEnE,wDAAwD;IACxD,IAAW,IAAI,WAGd;IAED,IAAW,QAAQ,WAElB;IAED,IAAW,GAAG,WAEb;IAEM,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,EAAE,GAAG,GAAE,MAAU;IAKpD,OAAO,IAAI,SAAS;CAO9B"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CalendarIndex = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Helps with converting sequential index to zero-based month, week, day index.
|
|
6
|
+
*
|
|
7
|
+
* Allows to use any number of days per week, not just 7. Also one can set any number of weeks per month (but it will be used globally).
|
|
8
|
+
*
|
|
9
|
+
* To update the value, either set `raw` property or use `set` method.
|
|
10
|
+
*
|
|
11
|
+
* Usage case: some ordered sequence of items, each has its own index, and you want to distribute them by months, weeks and days, knowing the number of items assigned per week.
|
|
12
|
+
*/
|
|
13
|
+
class CalendarIndex {
|
|
14
|
+
perWeek;
|
|
15
|
+
static WEEKS_PER_MONTH = 4;
|
|
16
|
+
/** sequential index */
|
|
17
|
+
raw = 0;
|
|
18
|
+
constructor(perWeek = 7) {
|
|
19
|
+
this.perWeek = perWeek;
|
|
20
|
+
}
|
|
21
|
+
get perMonth() { return this.perWeek * CalendarIndex.WEEKS_PER_MONTH; }
|
|
22
|
+
/** zero-based month index based on `perWeek` property */
|
|
23
|
+
get month() { return Math.floor(this.raw / this.perMonth); }
|
|
24
|
+
/** zero-based week index based on `perWeek` property */
|
|
25
|
+
get week() {
|
|
26
|
+
const rest = this.raw % this.perMonth;
|
|
27
|
+
return Math.floor(rest / this.perWeek);
|
|
28
|
+
}
|
|
29
|
+
get fullWeek() {
|
|
30
|
+
return Math.floor(this.raw / this.perWeek);
|
|
31
|
+
}
|
|
32
|
+
get day() {
|
|
33
|
+
return this.raw % this.perWeek;
|
|
34
|
+
}
|
|
35
|
+
set(month, week = 0, day = 0) {
|
|
36
|
+
this.raw = month * this.perMonth + week * this.perWeek + day;
|
|
37
|
+
return this;
|
|
38
|
+
}
|
|
39
|
+
toIndex() {
|
|
40
|
+
return {
|
|
41
|
+
month: this.month,
|
|
42
|
+
week: this.week,
|
|
43
|
+
day: this.day,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.CalendarIndex = CalendarIndex;
|
|
48
|
+
//# sourceMappingURL=calendarIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendarIndex.js","sourceRoot":"","sources":["../../src/dates/calendarIndex.ts"],"names":[],"mappings":";;;AAcA;;;;;;;;GAQG;AACH,MAAa,aAAa;IAOD;IALrB,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;IAE3B,uBAAuB;IAChB,GAAG,GAAW,CAAC,CAAC;IAEvB,YAAqB,UAAkB,CAAC;QAAnB,YAAO,GAAP,OAAO,CAAY;IAAI,CAAC;IAE7C,IAAW,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;IAE9E,yDAAyD;IACzD,IAAW,KAAK,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnE,wDAAwD;IACxD,IAAW,IAAI;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,IAAW,GAAG;QACV,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;IACnC,CAAC;IAEM,GAAG,CAAC,KAAa,EAAE,OAAe,CAAC,EAAE,MAAc,CAAC;QACvD,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QAC7D,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,OAAO;QACV,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC;IACN,CAAC;;AAvCL,sCAwCC"}
|