🍠 Mengenal Pustaka Kalender Jawa

JAVASCRIPTLIBRARYPENANGGALAN-JAWAPASARANWINDU

Photo by Rafif Prawira on Unsplash

https://kalenderjawa.dev

Kalender Jawa merupakan salah satu warisan sangat besar dari masyarakat Jawa dan sesuai fungsinya yaitu sebagai penanggalan atau sistem kalender, keunggulannya yaitu mempunyai ketelitian sangat tinggi dan penanggalan ini diturunkan secara turun-temurun dengan sistem hapalan, hal ini bisa terjadi karena Kalender Jawa merupakan kalender aritmatis yang mempunyai Rumus Abadi.

Pustaka Kalender Jawa

Pustaka Kalender Jawa saya buat dengan tujuan untuk mengenalkan kembali dan juga mempermudah penggunaan dan hapalan Kalender Jawa. Pustaka ini dibangun memakai bahasa JavaScript sehingga bisa anda pakai di untuk membangun aplikasi web, mobile maupun desktop.

Instalasi pustaka bisa di lingkungan Node.js maupun Browser dan khusus untuk browser bisa memakai fitur Module ES6

API

Metode atau fungsi di pustaka ini sangat mudah digunakan, dokumentasi lengkap dan contoh bisa anda lihat di dokumentasi website.

Bulan

Sebagai contoh untuk mendapatkan detil, misalnya hari, tanggal, pasaran dari Penanggalan Jawa selama satu bulan penuh anda bisa memakai fungsi sasi


import * as KalenderJawa from '@kalenderjawa/pustaka'

KalenderJawa.sasi('sapar', 1953).then({ k, s } => {
  console.log(s.get(k))
})

Rumus

Untuk mencari Rumus Abadi anda bisa memakai metode cariRumusAbadiAwalBulanTahunJawa

KalenderJawa.cariRumusAbadiAwalBulanTahunJawa('romadon', 1952).then(data => {
  console.log(`${data.rumus.wulan.wulan}_${data.rumus.dino}_${data.rumus.pasaran}`)
  // romadon_7_4 (don tu pat)
})

Rumus-rumus di Kalender Jawa ini sebenarnya untuk dihapal tetapi pustaka ini menyediakan API rumus untuk tujuan pembelajaran.

Silahkan melihat Tabel Rumus Abadi di website kalenderjawa.dev

Internal

Secara internal kerja dari API ini sangat sederhana yaitu memakai perhitungan dari rumus abadi dan tabel lookup dari Map.

/**
   * Mencari Kurup dan Taun Jawa
   * @param { number } input - 4 digit integer
   * @returns { Promise } data - hasil promise adalah object
   */

async function cariKurupTaun (_q: number): Promise<TaunKurupType> {
  const _qi = parseInt(_q)
  return new Promise((resolve, reject) => {
    for (const _kurup of Kurup.KURUP_ASAPON_ANENHING) {
      _kurup.awal.find(query => {
        if (query === _qi) resolve(_kurup)
      })
    }

    reject(new Error('Error cariKurupTaun'))
  })
}

Misalnya untuk mencari Kurup tahun Jawa tertentu fungsi cariKurupTaun akan mencari tahun tersebut di Map KURUP_ASAPON_ANENHING yang isinya sebenarnya hanyalah data statik tahun jawa pada kurup tertentu

const JIMAKIR_ANENHING = {
  taun: ARANING_TAHUN_SEWINDU.get(_JIMAKIR),
  kurup: ANENHING,
  awal: [1994, 2002, 2010, 2018, 2026, 2034, 2042, 2050, 2058,
   2066, 2074, 2081, 2089, 2098, 2106]
}

Untuk mencari rumus awal bulan di tahun jawa cukup diperlukan bulan dan tahun kurup dengan memakai fungsi cariHariPasaranAwalBulanTahunJawa dan dari rumus tersebut bisa diatur hari dan pasaran.

Mungkin secara internal pustaka ini kelihatannya sangat kompleks tetapi sebenarnya konsepnya sangatlah sederhana. Silahkan mempelajari lebih lanjut di website Kalender Jawa 🙏.

Aplikasi

Sengkala merupakan salah satu aplikasi sederhana yang saya buat memakai API dari Pustaka Kalender Jawa dan pustaka Vue.

Sengkala

saat ini aplikasi Sengkala masih dalam tahap pengembangan tetapi anda sudah bisa memakainya untuk melihat tanggal maupun pasaran untuk tiap tahun Jawa tertentu.


Equan Pr.

Equan Pr. (@junwatu)