feat: inital commit project

This commit is contained in:
2026-09-18 19:30:05 +07:00
commit b2208afcb6
19 changed files with 3519 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
/* whatsapp.js — Format tanggal, render template, dan buat link wa.me */
(function (global) {
'use strict';
var HARI = ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'];
var BULAN = ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni',
'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'];
function parseISO(iso) {
if (!iso) return null;
var d = new Date(String(iso).length <= 10 ? iso + 'T00:00:00' : iso);
return isNaN(d.getTime()) ? null : d;
}
function namaHari(iso) {
var d = parseISO(iso);
return d ? HARI[d.getDay()] : '';
}
// 22 September 2025
function tanggalPanjang(iso) {
var d = parseISO(iso);
if (!d) return '';
return d.getDate() + ' ' + BULAN[d.getMonth()] + ' ' + d.getFullYear();
}
function tanggalLengkap(iso) {
var d = parseISO(iso);
if (!d) return '';
return HARI[d.getDay()] + ', ' + d.getDate() + ' ' + BULAN[d.getMonth()] + ' ' + d.getFullYear();
}
function context(candidate, settings) {
var s = settings || {};
var iv = candidate.interview || {};
var tanggalSumber = iv.tanggal || candidate.tanggalMelamar || '';
return {
nama: candidate.nama || '',
posisi: candidate.posisi || '',
perusahaan: s.perusahaan || 'E-recruitment',
status: candidate.statusNama || '',
tanggal: tanggalPanjang(tanggalSumber),
hari: namaHari(tanggalSumber),
tanggal_lengkap: tanggalLengkap(tanggalSumber),
tanggal_melamar: tanggalPanjang(candidate.tanggalMelamar),
jam: iv.jam || '',
metode: iv.metode || '',
lokasi: iv.lokasi || '',
pewawancara: iv.pewawancara || '',
hr: s.hr || '',
jabatan_hr: s.jabatanHr || ''
};
}
function render(isi, ctx) {
return String(isi || '').replace(/\{\{\s*([a-zA-Z_]+)\s*\}\}/g, function (match, key) {
var k = key.toLowerCase();
return Object.prototype.hasOwnProperty.call(ctx, k) ? String(ctx[k]) : match;
});
}
function buildLink(phoneNorm, message) {
return 'https://wa.me/' + phoneNorm + '?text=' + encodeURIComponent(message || '');
}
function open(phoneNorm, message) {
var w = global.open(buildLink(phoneNorm, message), '_blank', 'noopener');
if (w) w.focus();
}
var PLACEHOLDERS = [
'nama', 'posisi', 'perusahaan', 'status', 'tanggal', 'hari', 'jam',
'metode', 'lokasi', 'pewawancara', 'hr', 'jabatan_hr'
];
global.WA = {
render: render, context: context, buildLink: buildLink, open: open,
namaHari: namaHari, tanggalPanjang: tanggalPanjang, tanggalLengkap: tanggalLengkap,
PLACEHOLDERS: PLACEHOLDERS
};
})(window);