UNPKG

10.9 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const dateAdd = require("date-fns/add_days");
4const dateDiff = require("date-fns/difference_in_calendar_days");
5const BalineseDate_1 = require("./BalineseDate");
6const PancaWara_1 = require("./PancaWara");
7const Rahinan_1 = require("./Rahinan");
8const SaptaWara_1 = require("./SaptaWara");
9const Sasih_1 = require("./Sasih");
10const SasihDayInfo_1 = require("./SasihDayInfo");
11const TriWara_1 = require("./TriWara");
12const Wuku_1 = require("./Wuku");
13class 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}
118exports.BalineseDateUtil = BalineseDateUtil;
119const _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};
130const _F_CHECK = (expectation, reality) => {
131 return (expectation !== undefined) ? (expectation === reality) : true;
132};
133const _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};
152const _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};
163const _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};