82 lines
2.6 KiB
JavaScript
82 lines
2.6 KiB
JavaScript
/* 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);
|