1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const dateAdd = require("date-fns/add_days");
|
4 | const dateDiff = require("date-fns/difference_in_calendar_days");
|
5 | const BalineseDate_1 = require("./BalineseDate");
|
6 | const PancaWara_1 = require("./PancaWara");
|
7 | const Rahinan_1 = require("./Rahinan");
|
8 | const SaptaWara_1 = require("./SaptaWara");
|
9 | const Sasih_1 = require("./Sasih");
|
10 | const SasihDayInfo_1 = require("./SasihDayInfo");
|
11 | const TriWara_1 = require("./TriWara");
|
12 | const Wuku_1 = require("./Wuku");
|
13 | class BalineseDateUtil {
|
14 | static filterByDateRange(start, end, filter) {
|
15 | const result = [];
|
16 | let now = dateAdd(start, 0);
|
17 | for (; dateDiff(end, now) >= 0; now = dateAdd(now, 1)) {
|
18 | const x = new BalineseDate_1.BalineseDate(now);
|
19 | if (this.filterByItem(x, filter)) {
|
20 | result.push(x);
|
21 | }
|
22 | }
|
23 | return result;
|
24 | }
|
25 | static filterByList(list, filter) {
|
26 | const result = [];
|
27 | for (const item of list) {
|
28 | if (this.filterByItem(item, filter)) {
|
29 | result.push(item);
|
30 | }
|
31 | }
|
32 | return result;
|
33 | }
|
34 | static filterByItem(item, filter) {
|
35 | if (filter !== undefined) {
|
36 | if (!_F_CHECK(filter.wuku, item.wuku)) {
|
37 | return false;
|
38 | }
|
39 | if (!_F_CHECK(filter.ekaWara, item.ekaWara)) {
|
40 | return false;
|
41 | }
|
42 | if (!_F_CHECK(filter.dwiWara, item.dwiWara)) {
|
43 | return false;
|
44 | }
|
45 | if (!_F_CHECK(filter.triWara, item.triWara)) {
|
46 | return false;
|
47 | }
|
48 | if (!_F_CHECK(filter.caturWara, item.caturWara)) {
|
49 | return false;
|
50 | }
|
51 | if (!_F_CHECK(filter.pancaWara, item.pancaWara)) {
|
52 | return false;
|
53 | }
|
54 | if (!_F_CHECK(filter.sadWara, item.sadWara)) {
|
55 | return false;
|
56 | }
|
57 | if (!_F_CHECK(filter.saptaWara, item.saptaWara)) {
|
58 | return false;
|
59 | }
|
60 | if (!_F_CHECK(filter.astaWara, item.astaWara)) {
|
61 | return false;
|
62 | }
|
63 | if (!_F_CHECK(filter.sangaWara, item.sangaWara)) {
|
64 | return false;
|
65 | }
|
66 | if (!_F_CHECK(filter.dasaWara, item.dasaWara)) {
|
67 | return false;
|
68 | }
|
69 | if (!_F_CHECK(filter.ingkel, item.ingkel)) {
|
70 | return false;
|
71 | }
|
72 | if (!_F_CHECK(filter.jejepan, item.jejepan)) {
|
73 | return false;
|
74 | }
|
75 | if (!_F_CHECK(filter.watekAlit, item.watekAlit)) {
|
76 | return false;
|
77 | }
|
78 | if (!_F_CHECK(filter.watekMadya, item.watekMadya)) {
|
79 | return false;
|
80 | }
|
81 | if (!_F_CHECK(filter.lintang, item.lintang)) {
|
82 | return false;
|
83 | }
|
84 | if (!_F_CHECK(filter.pancaSuda, item.pancaSuda)) {
|
85 | return false;
|
86 | }
|
87 | if (!_F_CHECK(filter.pararasan, item.pararasan)) {
|
88 | return false;
|
89 | }
|
90 | if (!_F_CHECK(filter.rakam, item.rakam)) {
|
91 | return false;
|
92 | }
|
93 | if (!_F_CHECK(filter.ekaJalaRsi, item.ekaJalaRsi)) {
|
94 | return false;
|
95 | }
|
96 | if (!_F_CHECK(filter.saka, item.saka)) {
|
97 | return false;
|
98 | }
|
99 | if (!_F_CHECK(filter.sasih, item.sasih)) {
|
100 | return false;
|
101 | }
|
102 | if (!_F_CHECK(filter.pratithiSamutPada, item.pratithiSamutPada)) {
|
103 | return false;
|
104 | }
|
105 | if (!_F_CHECK_SASIH_D(filter.sasihDay, item.sasihDay)) {
|
106 | return false;
|
107 | }
|
108 | if (!_F_CHECK_SASIH_D_I(filter.sasihDayInfo, item.sasihDayInfo)) {
|
109 | return false;
|
110 | }
|
111 | }
|
112 | return true;
|
113 | }
|
114 | static getRahinan(date) {
|
115 | return _F_CALC_RAHINAN(date);
|
116 | }
|
117 | }
|
118 | exports.BalineseDateUtil = BalineseDateUtil;
|
119 | const _F_ARRAY_CHECK = (a, b) => {
|
120 | if (a.length === b.length) {
|
121 | for (let i = 0; i < a.length; i++) {
|
122 | if (a[i] !== b[i]) {
|
123 | return false;
|
124 | }
|
125 | }
|
126 | return true;
|
127 | }
|
128 | return false;
|
129 | };
|
130 | const _F_CHECK = (expectation, reality) => {
|
131 | return (expectation !== undefined) ? (expectation === reality) : true;
|
132 | };
|
133 | const _F_CHECK_SASIH_D = (expectation, reality) => {
|
134 | if (expectation !== undefined) {
|
135 | switch (expectation.length) {
|
136 | case 1:
|
137 | if (reality.length === 1) {
|
138 | return (expectation[0] === reality[0]);
|
139 | }
|
140 | else if (reality.length === 2) {
|
141 | return (expectation[0] === reality[0]) || (expectation[0] === reality[1]);
|
142 | }
|
143 | return false;
|
144 | case 2:
|
145 | return (reality.length === 2) ? _F_ARRAY_CHECK(expectation, reality) : false;
|
146 | default:
|
147 | return false;
|
148 | }
|
149 | }
|
150 | return true;
|
151 | };
|
152 | const _F_CHECK_SASIH_D_I = (expectation, reality) => {
|
153 | if (expectation !== undefined) {
|
154 | if (expectation === SasihDayInfo_1.SasihDayInfo.PURNAMA || expectation === SasihDayInfo_1.SasihDayInfo.TILEM) {
|
155 | return expectation === reality;
|
156 | }
|
157 | else {
|
158 | return expectation === reality.reference;
|
159 | }
|
160 | }
|
161 | return true;
|
162 | };
|
163 | const _F_CALC_RAHINAN = (date) => {
|
164 | const arr = new Array();
|
165 | if (date !== undefined) {
|
166 | if (date.triWara === TriWara_1.TriWara.KAJENG && date.pancaWara === PancaWara_1.PancaWara.KLIWON) {
|
167 | arr.push(Rahinan_1.Rahinan.KAJENG_KLIWON);
|
168 | }
|
169 | if (date.saptaWara === SaptaWara_1.SaptaWara.ANGGARA && date.pancaWara === PancaWara_1.PancaWara.KLIWON) {
|
170 | arr.push(Rahinan_1.Rahinan.ANGGARA_KASIH);
|
171 | }
|
172 | else if (date.saptaWara === SaptaWara_1.SaptaWara.BUDA && date.pancaWara === PancaWara_1.PancaWara.WAGE) {
|
173 | arr.push(Rahinan_1.Rahinan.BUDA_CEMENG);
|
174 | }
|
175 | if (date.wuku === Wuku_1.Wuku.SINTA) {
|
176 | if (date.saptaWara === SaptaWara_1.SaptaWara.REDITE) {
|
177 | arr.push(Rahinan_1.Rahinan.BANYU_PINARUH);
|
178 | }
|
179 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SOMA) {
|
180 | arr.push(Rahinan_1.Rahinan.SOMA_RIBEK);
|
181 | }
|
182 | else if (date.saptaWara === SaptaWara_1.SaptaWara.ANGGARA) {
|
183 | arr.push(Rahinan_1.Rahinan.SABUH_EMAS);
|
184 | }
|
185 | else if (date.saptaWara === SaptaWara_1.SaptaWara.BUDA) {
|
186 | arr.push(Rahinan_1.Rahinan.PAGER_WESI);
|
187 | }
|
188 | }
|
189 | else if (date.wuku === Wuku_1.Wuku.LANDEP) {
|
190 | if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
191 | arr.push(Rahinan_1.Rahinan.TUMPEK_LANDEP);
|
192 | }
|
193 | }
|
194 | else if (date.wuku === Wuku_1.Wuku.WARIGA) {
|
195 | if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
196 | arr.push(Rahinan_1.Rahinan.TUMPEK_UDUH);
|
197 | }
|
198 | }
|
199 | else if (date.wuku === Wuku_1.Wuku.SUNGSANG) {
|
200 | if (date.saptaWara === SaptaWara_1.SaptaWara.WRASPATI) {
|
201 | arr.push(Rahinan_1.Rahinan.SUGIHAN_JAWA);
|
202 | }
|
203 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SUKRA) {
|
204 | arr.push(Rahinan_1.Rahinan.SUGIHAN_BALI);
|
205 | }
|
206 | }
|
207 | else if (date.wuku === Wuku_1.Wuku.DUNGULAN) {
|
208 | if (date.saptaWara === SaptaWara_1.SaptaWara.REDITE) {
|
209 | arr.push(Rahinan_1.Rahinan.PENYEKEBAN_GALUNGAN);
|
210 | }
|
211 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SOMA) {
|
212 | arr.push(Rahinan_1.Rahinan.PENYAJAN_GALUNGAN);
|
213 | }
|
214 | else if (date.saptaWara === SaptaWara_1.SaptaWara.ANGGARA) {
|
215 | arr.push(Rahinan_1.Rahinan.PENAMPAHAN_GALUNGAN);
|
216 | }
|
217 | else if (date.saptaWara === SaptaWara_1.SaptaWara.BUDA) {
|
218 | arr.push(Rahinan_1.Rahinan.GALUNGAN);
|
219 | }
|
220 | else if (date.saptaWara === SaptaWara_1.SaptaWara.WRASPATI) {
|
221 | arr.push(Rahinan_1.Rahinan.MANIS_GALUNGAN);
|
222 | }
|
223 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
224 | arr.push(Rahinan_1.Rahinan.PEMARIDAN_GURU);
|
225 | }
|
226 | }
|
227 | else if (date.wuku === Wuku_1.Wuku.KUNINGAN) {
|
228 | if (date.saptaWara === SaptaWara_1.SaptaWara.REDITE) {
|
229 | arr.push(Rahinan_1.Rahinan.ULIHAN);
|
230 | }
|
231 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SOMA) {
|
232 | arr.push(Rahinan_1.Rahinan.PEMACEKAN_AGUNG);
|
233 | }
|
234 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SUKRA) {
|
235 | arr.push(Rahinan_1.Rahinan.PENAMPAHAN_KUNINGAN);
|
236 | }
|
237 | else if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
238 | arr.push(Rahinan_1.Rahinan.KUNINGAN);
|
239 | }
|
240 | }
|
241 | else if (date.wuku === Wuku_1.Wuku.PAHANG) {
|
242 | if (date.saptaWara === SaptaWara_1.SaptaWara.BUDA) {
|
243 | arr.push(Rahinan_1.Rahinan.PEGAT_UWAKAN);
|
244 | }
|
245 | }
|
246 | else if (date.wuku === Wuku_1.Wuku.UYE) {
|
247 | if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
248 | arr.push(Rahinan_1.Rahinan.TUMPEK_KANDANG);
|
249 | }
|
250 | }
|
251 | else if (date.wuku === Wuku_1.Wuku.WAYANG) {
|
252 | if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
253 | arr.push(Rahinan_1.Rahinan.TUMPEK_WAYANG);
|
254 | }
|
255 | }
|
256 | else if (date.wuku === Wuku_1.Wuku.WATUGUNUNG) {
|
257 | if (date.saptaWara === SaptaWara_1.SaptaWara.SANISCARA) {
|
258 | arr.push(Rahinan_1.Rahinan.SARASWATI);
|
259 | }
|
260 | }
|
261 | const temp = date.date;
|
262 | const n1Day = new BalineseDate_1.BalineseDate(dateAdd(temp, 1));
|
263 | const b1Day = new BalineseDate_1.BalineseDate(dateAdd(temp, -1));
|
264 | const b2Day = new BalineseDate_1.BalineseDate(dateAdd(temp, -2));
|
265 | if (n1Day.sasih === Sasih_1.Sasih.KAPITU && n1Day.sasihDayInfo === SasihDayInfo_1.SasihDayInfo.TILEM) {
|
266 | arr.push(Rahinan_1.Rahinan.SIWA_RATRI);
|
267 | }
|
268 | else if (date.saka < n1Day.saka) {
|
269 | arr.push(Rahinan_1.Rahinan.TAWUR_AGUNG_KASANGA);
|
270 | }
|
271 | else if (b1Day.saka < date.saka) {
|
272 | arr.push(Rahinan_1.Rahinan.NYEPI);
|
273 | }
|
274 | else if (b2Day.saka < date.saka && b1Day.saka === date.saka) {
|
275 | arr.push(Rahinan_1.Rahinan.NGEMBAK_GENI);
|
276 | }
|
277 | if (date.sasihDayInfo === SasihDayInfo_1.SasihDayInfo.PURNAMA) {
|
278 | arr.push(Rahinan_1.Rahinan.PURNAMA);
|
279 | }
|
280 | else if (date.sasihDayInfo === SasihDayInfo_1.SasihDayInfo.TILEM) {
|
281 | arr.push(Rahinan_1.Rahinan.TILEM);
|
282 | }
|
283 | }
|
284 | Object.freeze(arr);
|
285 | return arr;
|
286 | };
|