feat: inital commit project
This commit is contained in:
@@ -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);
|
||||
Reference in New Issue
Block a user