{"id":2945,"date":"2026-09-03T14:01:20","date_gmt":"2026-09-03T07:01:20","guid":{"rendered":"https:\/\/pandaigadai.com\/blog\/?page_id=2945"},"modified":"2026-09-03T14:57:19","modified_gmt":"2026-09-03T07:57:19","slug":"umkm-branding-tracker","status":"publish","type":"page","link":"https:\/\/pandaigadai.com\/blog\/umkm-branding-tracker\/","title":{"rendered":"UMKM Branding Tracker"},"content":{"rendered":"<!DOCTYPE html>\r\n<html lang=\"id\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\r\n<title>Dashboard UMKM Branding \u2014 Pandai Gadai<\/title>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Rubik:wght@400;500;600;700;800;900&display=swap\">\r\n<style>\r\n#pg-page *, #pg-page *::before, #pg-page *::after{box-sizing:border-box;margin:0;padding:0}\r\nhtml,body{margin:0;padding:0;background:#f0f2f8}\r\n#pg-page{\r\n  --radius:0.625rem;--background:#ffffff;--foreground:#021431;--card:#ffffff;\r\n  --primary:#02439F;--primary-deep:#011455;--primary-bright:#0255CA;--primary-foreground:#f8fafc;\r\n  --accent:#ffcd05;--accent-foreground:#021431;--secondary:#f3f5fb;--muted:#f0f2f8;\r\n  --muted-foreground:#6b7280;--destructive:#dc2626;--success:#047857;--border:#e2e6f0;\r\n  --footer-bg:#02439f;--shadow-card:0 2px 8px -2px rgba(2,20,49,0.08);\r\n  --gradient-hero:linear-gradient(135deg,#011455,#0255CA);\r\n}\r\n#pg-page{font-family:\"Rubik\",system-ui,-apple-system,\"Segoe UI\",sans-serif;background:var(--muted);color:var(--foreground);line-height:1.6;-webkit-font-smoothing:antialiased}\r\n#pg-page h1,#pg-page h2,#pg-page h3,#pg-page h4{letter-spacing:-0.02em}\r\n#pg-page p{margin:0}#pg-page a{text-decoration:none;color:inherit}#pg-page img{display:block;max-width:100%}\r\n#pg-page ul{list-style:none}\r\n#pg-page .site-header{position:sticky;top:0;z-index:100;background:var(--background);border-bottom:1px solid var(--border)}\r\n#pg-page .header-inner{max-width:78rem;margin:0 auto;display:flex;height:5rem;align-items:center;justify-content:space-between;padding:0 1rem}\r\n#pg-page .btn-header{display:inline-flex;align-items:center;gap:.375rem;border-radius:calc(var(--radius) - 2px);background:var(--accent);padding:.5rem .875rem;font-size:.875rem;font-weight:700;color:var(--accent-foreground);box-shadow:0 1px 2px rgba(0,0,0,.05)}\r\n#pg-page .dash-hero{background:var(--gradient-hero);color:var(--primary-foreground);position:relative;overflow:hidden}\r\n#pg-page .dash-hero-overlay{position:absolute;inset:0;opacity:.3;background:radial-gradient(ellipse at top right,rgba(255,205,5,.35),transparent 60%);pointer-events:none}\r\n#pg-page .dash-hero-inner{position:relative;max-width:78rem;margin:0 auto;padding:2rem 1rem 2.25rem}\r\n#pg-page .dash-hero .eyebrow{display:inline-flex;align-items:center;gap:.4rem;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;background:rgba(255,255,255,.15);padding:.3rem .7rem;border-radius:999px}\r\n#pg-page .dash-hero h1{font-size:1.6rem;font-weight:800;margin:.7rem 0 .25rem}\r\n#pg-page .dash-hero p{font-size:.9rem;color:rgba(255,255,255,.85)}\r\n@media(min-width:768px){#pg-page .dash-hero h1{font-size:2rem}}\r\n#pg-page .dash-body{max-width:78rem;margin:0 auto;padding:1.25rem 1rem 2.5rem}\r\n#pg-page .controls{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius)+4px);padding:.75rem .9rem;box-shadow:var(--shadow-card);margin-bottom:1rem}\r\n#pg-page .ctl-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-foreground)}\r\n#pg-page select,#pg-page input[type=text],#pg-page input[type=number]{font-family:inherit;padding:.42rem .55rem;border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);font-size:.8125rem;color:var(--foreground);background:var(--card);outline:none}\r\n#pg-page input:focus,#pg-page select:focus{border-color:var(--primary)}\r\n#pg-page .btn-accent{display:inline-flex;align-items:center;gap:.4rem;border-radius:calc(var(--radius) - 2px);background:var(--accent);padding:.5rem 1.1rem;font-family:inherit;font-size:.8125rem;font-weight:700;color:var(--accent-foreground);border:none;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.05)}\r\n#pg-page .tabs{display:flex;gap:.2rem;border-bottom:2px solid var(--border);margin:.25rem 0 1.15rem;overflow-x:auto}\r\n#pg-page .tabs button{border:none;background:none;font-family:inherit;font-size:.9rem;font-weight:700;color:var(--muted-foreground);padding:.6rem .95rem;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}\r\n#pg-page .tabs button:hover{color:var(--foreground)}\r\n#pg-page .tabs button.active{color:var(--primary);border-bottom-color:var(--primary)}\r\n#pg-page .status{font-size:.82rem;padding:.6rem .8rem;border-radius:calc(var(--radius) - 2px);margin-bottom:1rem;line-height:1.5}\r\n#pg-page .status.info{background:var(--secondary);color:var(--primary-deep);border:1px solid var(--border)}\r\n#pg-page .status.ok{background:#ecfdf5;color:var(--success);border:1px solid #a7f3d0}\r\n#pg-page .status.err{background:#fef2f2;color:var(--destructive);border:1px solid #fca5a5}\r\n#pg-page .scorecards{display:grid;grid-template-columns:repeat(5,1fr);gap:.75rem;margin-bottom:1.25rem}\r\n#pg-page .sc{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius)+4px);padding:.9rem 1rem;box-shadow:var(--shadow-card);border-top:3px solid var(--primary)}\r\n#pg-page .sc.accent{border-top-color:var(--accent)}#pg-page .sc.green{border-top-color:var(--success)}\r\n#pg-page .sc.amber{border-top-color:#f59e0b}#pg-page .sc.red{border-top-color:var(--destructive)}\r\n#pg-page .sc .lbl{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-foreground)}\r\n#pg-page .sc .val{font-size:1.55rem;font-weight:800;color:var(--primary);line-height:1.1;margin-top:.3rem}\r\n#pg-page .sc.accent .val{color:var(--primary-deep)}#pg-page .sc.green .val{color:var(--success)}\r\n#pg-page .sc.amber .val{color:#b45309}#pg-page .sc.red .val{color:var(--destructive)}\r\n#pg-page .sc .sub{font-size:.7rem;color:var(--muted-foreground);margin-top:.2rem}\r\n@media(max-width:1000px){#pg-page .scorecards{grid-template-columns:repeat(2,1fr)}}\r\n@media(max-width:560px){#pg-page .scorecards{grid-template-columns:1fr 1fr}#pg-page .sc .val{font-size:1.35rem}}\r\n#pg-page .panel{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius)+4px);padding:1rem 1.15rem;box-shadow:var(--shadow-card);margin-bottom:1.25rem}\r\n#pg-page .panel-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.9rem;flex-wrap:wrap}\r\n#pg-page .panel-title{font-size:1rem;font-weight:800;color:var(--foreground)}\r\n#pg-page .panel-sub{font-size:.72rem;color:var(--muted-foreground);font-weight:600}\r\n#pg-page .tbl-wrap{overflow:auto;max-height:min(66vh,620px);border-radius:calc(var(--radius) - 2px);border:1px solid var(--border)}\r\n#pg-page table{width:100%;border-collapse:collapse;font-size:.82rem}\r\n#pg-page thead th{position:sticky;top:0;z-index:4;background:var(--secondary);color:var(--primary-deep);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;font-weight:800;padding:.6rem .65rem;text-align:right;cursor:pointer;user-select:none;white-space:nowrap;border-bottom:2px solid var(--border)}\r\n#pg-page thead th.l,#pg-page tbody td.l{text-align:left}\r\n#pg-page thead th.sorted{color:var(--primary);background:#e8eefb}\r\n#pg-page tbody td{padding:.5rem .65rem;text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;font-variant-numeric:tabular-nums}\r\n#pg-page tbody tr:hover{background:var(--secondary)}\r\n#pg-page td.branch{font-weight:700;color:var(--foreground)}\r\n#pg-page .rank{color:var(--muted-foreground);font-weight:700}\r\n#pg-page .bar-cell{position:relative}\r\n#pg-page .bar-fill{position:absolute;left:0;top:3px;bottom:3px;background:#e8eefb;border-radius:4px;z-index:0}\r\n#pg-page .bar-val{position:relative;z-index:1;font-weight:800}\r\n#pg-page .muted{color:var(--muted-foreground)}\r\n#pg-page .badge{display:inline-block;font-size:.66rem;font-weight:800;padding:.15rem .5rem;border-radius:999px;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}\r\n#pg-page .badge.done{background:#ecfdf5;color:var(--success);border:1px solid #a7f3d0}\r\n#pg-page .badge.proses{background:#fffbeb;color:#b45309;border:1px solid #fde68a}\r\n#pg-page .badge.cancel{background:#fef2f2;color:var(--destructive);border:1px solid #fca5a5}\r\n#pg-page .badge.blank{background:#f3f5fb;color:#6b7280;border:1px solid var(--border)}\r\n#pg-page .stcell{font-weight:800}\r\n#pg-page .st-ok{color:var(--success)}#pg-page .st-warn{color:var(--destructive)}\r\n#pg-page details{margin-bottom:1rem}\r\n#pg-page summary{cursor:pointer;font-size:.8rem;font-weight:700;color:var(--muted-foreground);padding:.3rem 0}\r\n#pg-page .hint{font-size:.72rem;color:var(--muted-foreground);margin-top:.5rem;line-height:1.55}\r\n#pg-page .pie-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}\r\n@media(max-width:900px){#pg-page .pie-grid{grid-template-columns:repeat(2,1fr)}}\r\n@media(max-width:560px){#pg-page .pie-grid{grid-template-columns:1fr}}\r\n#pg-page .pie-card{background:var(--secondary);border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);padding:.85rem}\r\n#pg-page .pie-card h4{font-size:.76rem;font-weight:800;margin-bottom:.65rem;color:var(--foreground);line-height:1.35}\r\n#pg-page .pie-legend-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;font-size:.72rem}\r\n#pg-page .pie-sw{width:10px;height:10px;border-radius:2px;flex-shrink:0}\r\n#pg-page .pie-legend-row b{margin-left:auto;font-weight:800;white-space:nowrap}\r\n#pg-page .pie-card svg path,#pg-page .pie-card svg circle{cursor:pointer;transition:opacity .1s}\r\n#pg-page .pie-card svg path:hover,#pg-page .pie-card svg circle:hover{opacity:.75}\r\n#pg-page .pie-tip{position:absolute;pointer-events:none;z-index:20;background:var(--foreground);color:#fff;font-size:.74rem;line-height:1.5;padding:.5rem .65rem;border-radius:8px;box-shadow:0 6px 18px -6px rgba(2,20,49,.5);white-space:nowrap;display:none}\r\n#pg-page .pie-tip b{color:var(--accent)}\r\n#pg-page .site-footer{background:var(--footer-bg);color:#fff}\r\n#pg-page .footer-grid{display:grid;grid-template-columns:1fr;gap:2.5rem;max-width:78rem;margin:0 auto;padding:3rem 1rem}\r\n#pg-page .footer-bottom{border-top:1px solid rgba(255,255,255,.15)}\r\n#pg-page .footer-bottom-inner{display:flex;flex-direction:column-reverse;align-items:center;justify-content:space-between;gap:.75rem;max-width:78rem;margin:0 auto;padding:1.25rem 1rem;font-size:.75rem;color:rgba(255,255,255,.8)}\r\n#pg-page .social-link{display:inline-flex;height:2rem;width:2rem;align-items:center;justify-content:center;border-radius:9999px;background:rgba(255,255,255,.1);color:#fff}\r\n#pg-page .footer-nav-link{color:rgba(255,255,255,.85)}\r\n@media(min-width:640px){#pg-page .footer-bottom-inner{flex-direction:row}}\r\n@media(min-width:768px){#pg-page .footer-grid{grid-template-columns:5fr 3fr 4fr}}\r\n#pg-page .dash-hero h1,#pg-page .dash-hero p,#pg-page .dash-hero .eyebrow{color:#fff!important}\r\n#pg-page .dash-hero p{color:rgba(255,255,255,.85)!important}\r\n#pg-page .site-footer h1,#pg-page .site-footer h2,#pg-page .site-footer h3,#pg-page .site-footer h4{color:#fff!important}\r\n#pg-page .site-footer p,#pg-page .site-footer a,#pg-page .site-footer li{color:rgba(255,255,255,.85)!important}\r\n#pg-page .footer-bottom-inner,#pg-page .footer-bottom-inner span{color:rgba(255,255,255,.8)!important}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div id=\"pg-page\">\r\n\r\n<div class=\"site-header\">\r\n  <div class=\"header-inner\">\r\n    <a href=\"https:\/\/pandaigadai.com\" style=\"display:flex;align-items:center\">\r\n      <img decoding=\"async\" src=\"https:\/\/pandaigadai.com\/blog\/wp-content\/uploads\/2026\/01\/cropped-panda-1.webp\" alt=\"Pandai Gadai\" style=\"height:3rem;width:auto\">\r\n    <\/a>\r\n    <a href=\"https:\/\/pandaigadai.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"btn-header\">pandaigadai.com<\/a>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"dash-hero\">\r\n  <div class=\"dash-hero-overlay\"><\/div>\r\n  <div class=\"dash-hero-inner\">\r\n    <span class=\"eyebrow\">\ud83e\udd1d UMKM Branding Activity Tracker<\/span>\r\n    <h1>Dashboard Approach UMKM + Pemasangan + Survey<\/h1>\r\n    <p>Ranking request co-branding per AM, status pemasangan, dan hasil survey pasca-pasang.<\/p>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"dash-body\">\r\n\r\n  <div id=\"status\" class=\"status info\">Memuat data\u2026<\/div>\r\n\r\n  <div class=\"controls\">\r\n    <button class=\"btn-accent\" onclick=\"UB.load()\">\u27f3 Muat \/ Refresh<\/button>\r\n    <span class=\"ctl-label\">Bulan (berdasarkan Request Date):<\/span>\r\n    <select id=\"sel-month\" onchange=\"UB.setMonth(this.value)\" disabled><option value=\"\">Memuat\u2026<\/option><\/select>\r\n    <span style=\"width:1px;height:1.4rem;background:var(--border)\"><\/span>\r\n    <span class=\"ctl-label\">Target terpasang \/ AM \/ bulan:<\/span>\r\n    <input type=\"number\" id=\"cfg-target\" value=\"3\" min=\"0\" step=\"1\" style=\"width:64px\" onchange=\"UB.render()\">\r\n  <\/div>\r\n\r\n  <div class=\"tabs\" id=\"tabs\" style=\"display:none\">\r\n    <button data-tab=\"ringkasan\" class=\"active\" onclick=\"UB.setTab('ringkasan')\">\ud83d\udcca Ringkasan<\/button>\r\n    <button data-tab=\"request\" onclick=\"UB.setTab('request')\">\ud83c\udff7\ufe0f Request & Pemasangan<\/button>\r\n    <button data-tab=\"survey\" onclick=\"UB.setTab('survey')\">\ud83d\udccb Survey Pasca-Pasang<\/button>\r\n  <\/div>\r\n\r\n  <section class=\"tabpane\" id=\"pane-ringkasan\" style=\"display:none\">\r\n    <div class=\"scorecards\" id=\"scorecards\">\r\n      <div class=\"sc\"><div class=\"lbl\">Total Request<\/div><div class=\"val\" id=\"k-total\">\u2014<\/div><div class=\"sub\" id=\"k-total-sub\">bulan terpilih<\/div><\/div>\r\n      <div class=\"sc accent\"><div class=\"lbl\">AM Mengajukan<\/div><div class=\"val\" id=\"k-am\">\u2014<\/div><div class=\"sub\">dari total AM aktif di data<\/div><\/div>\r\n      <div class=\"sc green\"><div class=\"lbl\">Sudah Terpasang<\/div><div class=\"val\" id=\"k-done\">\u2014<\/div><div class=\"sub\">Delivery Status: Sudah di cabang<\/div><\/div>\r\n      <div class=\"sc amber\"><div class=\"lbl\">Masih Proses<\/div><div class=\"val\" id=\"k-proses\">\u2014<\/div><div class=\"sub\">brief\/design\/cetak berjalan<\/div><\/div>\r\n      <div class=\"sc red\"><div class=\"lbl\">Cancel \/ Rejected<\/div><div class=\"val\" id=\"k-cancel\">\u2014<\/div><div class=\"sub\">good to go \/ owner feedback<\/div><\/div>\r\n    <\/div>\r\n    <div class=\"panel\">\r\n      <div class=\"panel-head\">\r\n        <div class=\"panel-title\">\ud83c\udfc6 Ranking request per AM<\/div>\r\n        <div class=\"panel-sub\" id=\"ring-sub\"><\/div>\r\n      <\/div>\r\n      <div class=\"tbl-wrap\">\r\n        <table id=\"tbl-ring\"><thead><tr id=\"ring-thead\"><\/tr><\/thead><tbody id=\"ring-tbody\"><\/tbody><\/table>\r\n      <\/div>\r\n      <div class=\"hint\">Status \"Tercapai\" dihitung dari jumlah request yang <b>Sudah Terpasang<\/b> (Delivery Status = Sudah di cabang) di rentang bulan terpilih, bukan dari jumlah request yang diajukan. Pilih \"Semua Bulan\" di atas buat lihat total dari awal data. Daftar AM diambil dari semua AM yang pernah input di sheet ini dari awal (bukan master roster resmi), jadi AM baru yang belum pernah input sama sekali gak akan muncul. Klik judul kolom untuk mengurutkan.<\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"tabpane\" id=\"pane-request\" style=\"display:none\">\r\n    <div class=\"panel\">\r\n      <div class=\"panel-head\">\r\n        <div class=\"panel-title\">\ud83c\udff7\ufe0f Request & Pemasangan<\/div>\r\n        <div class=\"panel-sub\" id=\"req-sub\"><\/div>\r\n      <\/div>\r\n      <div class=\"tbl-wrap\">\r\n        <table id=\"tbl-req\"><thead><tr id=\"req-thead\"><\/tr><\/thead><tbody id=\"req-tbody\"><\/tbody><\/table>\r\n      <\/div>\r\n      <div class=\"hint\">5 kolom di tengah (Good to go, Brief, Design, Owner Feedback, Delivery) itu apa adanya dari sheet, biar keliatan persis mana yang udah\/belum per baris. Kolom \"Tahap & PIC\" di paling kanan itu kesimpulan otomatis, siapa yang harus follow up berikutnya. Klik judul kolom untuk mengurutkan.<\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"tabpane\" id=\"pane-survey\" style=\"display:none\">\r\n    <div class=\"panel\">\r\n      <div class=\"panel-head\">\r\n        <div class=\"panel-title\">\ud83d\udcca Ringkasan Jawaban Survey<\/div>\r\n        <div class=\"panel-sub\" id=\"sv-chart-sub\"><\/div>\r\n      <\/div>\r\n      <div class=\"pie-wrap\" style=\"position:relative\">\r\n        <div class=\"pie-grid\" id=\"pie-grid\"><\/div>\r\n        <div class=\"pie-tip\" id=\"pie-tip\"><\/div>\r\n      <\/div>\r\n      <div class=\"hint\">Persentase dari total submission survey yang masuk (semua bulan, gak ikut filter bulan di atas karena datanya masih dikit).<\/div>\r\n    <\/div>\r\n    <div class=\"panel\">\r\n      <div class=\"panel-head\">\r\n        <div class=\"panel-title\">\ud83d\udccb Survey Pasca-Pasang \u2014 data mentah<\/div>\r\n        <div class=\"panel-sub\" id=\"sv-sub\"><\/div>\r\n      <\/div>\r\n      <div class=\"tbl-wrap\">\r\n        <table id=\"tbl-sv\"><thead><tr id=\"sv-thead\"><\/tr><\/thead><tbody id=\"sv-tbody\"><\/tbody><\/table>\r\n      <\/div>\r\n      <div class=\"hint\">Data ini gak di-join ke tabel Request (nama UMKM diketik manual di 2 form beda, rawan typo). Tabel ini mandiri, urut dari submission terbaru.<\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <div class=\"hint\" id=\"footer-note\" style=\"display:none\"><\/div>\r\n  <div style=\"text-align:center;padding-top:.5rem\">\r\n    <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1Mg78xET0D1gEAzOYlxfQijNr--o7vJ15m8-C9G7o0_U\/edit\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"font-size:.78rem;font-weight:700;color:var(--primary)\">\ud83d\udcc4 Buka Spreadsheet Asli (detail lengkap) \u2197<\/a>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"site-footer\">\r\n  <div class=\"footer-grid\">\r\n    <div>\r\n      <img decoding=\"async\" src=\"https:\/\/pandaigadai.com\/blog\/wp-content\/uploads\/2026\/01\/cropped-panda-1.webp\" alt=\"Pandai Gadai\" style=\"height:3.5rem;width:auto\">\r\n      <p style=\"margin-top:1.25rem;font-size:.875rem;color:rgba(255,255,255,0.85)\">Berizin dan Diawasi Otoritas Jasa Keuangan<\/p>\r\n      <p style=\"margin-top:.5rem;font-size:.875rem;font-weight:600\">Nomor Izin: KEP-180\/PL.02\/2023<\/p>\r\n    <\/div>\r\n    <div>\r\n      <h3 style=\"font-size:1rem;font-weight:700\">Navigasi<\/h3>\r\n      <ul style=\"margin-top:1rem;display:flex;flex-direction:column;gap:.625rem;font-size:.875rem;color:rgba(255,255,255,0.85)\">\r\n        <li><a href=\"https:\/\/pandaigadai.com\/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"footer-nav-link\">pandaigadai.com<\/a><\/li>\r\n      <\/ul>\r\n    <\/div>\r\n    <div>\r\n      <h3 style=\"font-size:1rem;font-weight:700\">Layanan Pengaduan Kantor Pusat<\/h3>\r\n      <p style=\"margin-top:1rem;font-size:.875rem;color:rgba(255,255,255,0.85)\">\r\n        Telepon: <a href=\"tel:085715322146\" class=\"footer-nav-link\">0857-1532-2146<\/a><br>\r\n        Email: <a href=\"mailto:hello@pandaigadai.com\" class=\"footer-nav-link\">hello@pandaigadai.com<\/a>\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"footer-bottom\">\r\n    <div class=\"footer-bottom-inner\">\r\n      <span>&copy; Copyright PT Solusi Gadai Pintar 2026 All Rights Reserved<\/span>\r\n      <div style=\"display:flex;align-items:center;gap:.75rem\">\r\n        <a href=\"https:\/\/www.instagram.com\/pandaigadai\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Instagram\" class=\"social-link\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"height:1rem;width:1rem\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"5\" ry=\"5\"\/><path d=\"M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37z\"\/><line x1=\"17.5\" y1=\"6.5\" x2=\"17.51\" y2=\"6.5\"\/><\/svg><\/a>\r\n        <a href=\"https:\/\/www.tiktok.com\/@pandaigadai.id\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"TikTok\" class=\"social-link\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" style=\"height:1rem;width:1rem\"><path d=\"M19.59 6.69a4.83 4.83 0 01-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 01-5.2 1.74 2.89 2.89 0 012.31-4.64 2.93 2.93 0 01.88.13V9.4a6.84 6.84 0 00-1-.05A6.33 6.33 0 005.8 20.1a6.34 6.34 0 0010.86-4.43V8.92a8.16 8.16 0 004.77 1.52V7A4.86 4.86 0 0119.59 6.69z\"\/><\/svg><\/a>\r\n        <a href=\"https:\/\/www.facebook.com\/pandaigadai\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Facebook\" class=\"social-link\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" style=\"height:1rem;width:1rem\"><path d=\"M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z\"\/><\/svg><\/a>\r\n        <a href=\"https:\/\/www.youtube.com\/@PandaiGadai\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"YouTube\" class=\"social-link\"><svg viewBox=\"0 0 24 24\" fill=\"currentColor\" style=\"height:1rem;width:1rem\"><path d=\"M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814z\"\/><\/svg><\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n'use strict';\r\nvar $=function(id){return document.getElementById(id);};\r\nvar SHEET_ID='1Mg78xET0D1gEAzOYlxfQijNr--o7vJ15m8-C9G7o0_U';\r\nvar TAB_REQ='Co-branding UMKM V2';\r\nvar TAB_SV='Form responses 1';\r\nvar LS='umkm_dash_pg_v1';\r\nvar MONTHS=['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'];\r\nvar state={tab:'ringkasan',selectedMonth:null,monthAuto:true,requests:[],surveys:[],sortReq:{key:'reqDate',dir:1},sortRank:{key:'count',dir:-1}};\r\n\r\nfunction savePrefs(){try{localStorage.setItem(LS,JSON.stringify({tab:state.tab,selectedMonth:state.selectedMonth,monthAuto:state.monthAuto,target:$('cfg-target').value}));}catch(e){}}\r\nfunction loadPrefs(){try{var p=JSON.parse(localStorage.getItem(LS)||'{}');\r\n  if(p.tab)state.tab=p.tab;\r\n  if(typeof p.monthAuto==='boolean'){state.monthAuto=p.monthAuto;state.selectedMonth=p.selectedMonth||null;}\r\n  if(p.target)$('cfg-target').value=p.target;\r\n }catch(e){}}\r\n\r\nfunction setStatus(m,c){var s=$('status');s.style.display='block';s.className='status '+(c||'info');s.innerHTML=m;}\r\nfunction nf(n){return isFinite(n)?Math.round(n).toLocaleString('id-ID'):'\u2014';}\r\nfunction esc(s){return String(s==null?'':s).replace(\/[&<>\"']\/g,function(c){return{'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c];});}\r\nfunction clip(s,n){s=String(s||'');return s.length>n?s.slice(0,n-1)+'\u2026':s;}\r\nfunction dmy(t){return t==null?'\u2014':new Date(t).toLocaleDateString('id-ID',{day:'numeric',month:'short',year:'numeric'});}\r\nfunction target(){var t=parseInt($('cfg-target').value,10);return isFinite(t)&&t>=0?t:3;}\r\n\r\nfunction parseCSV(text){var rows=[],row=[],cur='',i=0,q=false;while(i<text.length){var c=text[i];\r\n if(q){if(c==='\"'){if(text[i+1]==='\"'){cur+='\"';i++;}else q=false;}else cur+=c;}\r\n else{if(c==='\"')q=true;else if(c===','){row.push(cur);cur='';}else if(c==='\\n'){row.push(cur);rows.push(row);row=[];cur='';}else if(c==='\\r'){}else cur+=c;}\r\n i++;}\r\n if(cur.length||row.length){row.push(cur);rows.push(row);}return rows;}\r\n\r\nfunction cbucket(){return Math.floor(Date.now()\/300000);}\r\nfunction gvizUrl(tab){return 'https:\/\/docs.google.com\/spreadsheets\/d\/'+SHEET_ID+'\/gviz\/tq?tqx=out:csv&sheet='+encodeURIComponent(tab)+'&_cb='+cbucket();}\r\n\r\nfunction fetchCsv(url){return fetch(url,{credentials:'omit'}).then(function(r){\r\n if(!r.ok)throw new Error('HTTP '+r.status);var ct=r.headers.get('content-type')||'';return r.text().then(function(t){\r\n  if(\/text\\\/html\/i.test(ct)||new RegExp('<'+'html','i').test(t.slice(0,200)))throw new Error('html\/blocked');\r\n  var rows=parseCSV(t).filter(function(x){return x.length>1||(x.length===1&&x[0]!=='');});\r\n  if(rows.length<1)throw new Error('empty');return rows;});});}\r\n\r\nfunction findHdr(hdr){var norm=hdr.map(function(h){return String(h).trim();});\r\n return function(){for(var a=0;a<arguments.length;a++){var i=norm.indexOf(arguments[a]);if(i>=0)return i;}return -1;};}\r\n\r\n\/* \"1 Jul 2026\" atau \"27Aug 2026\" (kadang nempel tanpa spasi) *\/\r\nfunction parseIndoDate(s){if(!s)return null;s=String(s).trim();\r\n var m=s.match(\/^(\\d{1,2})\\s*([A-Za-z]{3,})\\.?\\s*(\\d{4})\/);if(!m)return null;\r\n var mi=MONTHS.indexOf(m[2].slice(0,3).toLowerCase());if(mi<0)return null;\r\n return Date.UTC(+m[3],mi,+m[1]);}\r\n\/* \"20\/08\/2026\" atau \"20\/08\/2026 10:16:54\" *\/\r\nfunction parseDMY(s){if(!s)return null;s=String(s).trim();\r\n var m=s.match(\/^(\\d{1,2})\\\/(\\d{1,2})\\\/(\\d{4})(?:\\s+(\\d{1,2}):(\\d{2})(?::(\\d{2}))?)?\/);if(!m)return null;\r\n return Date.UTC(+m[3],+m[2]-1,+m[1],+(m[4]||0),+(m[5]||0),+(m[6]||0));}\r\n\r\nfunction monthKey(ts){var d=new Date(ts);return d.getUTCFullYear()+'-'+String(d.getUTCMonth()+1).padStart(2,'0');}\r\nfunction monthLabel(ym){if(!ym)return'';var p=ym.split('-');return new Date(+p[0],+p[1]-1,1).toLocaleDateString('id-ID',{month:'long',year:'numeric'});}\r\n\r\n\/* ---- load Co-branding UMKM V2: header 3-baris digabung gviz jadi berantakan, pakai posisi kolom fix ---- *\/\r\nfunction loadRequests(){\r\n return fetchCsv(gvizUrl(TAB_REQ)).then(function(rows){\r\n  var out=[];\r\n  for(var r=1;r<rows.length;r++){var row=rows[r];if(!row)continue;\r\n   var typeMark=(row[0]||'').trim().toUpperCase();\r\n   if(typeMark==='CONTOH')continue; \/\/ baris contoh format, exclude\r\n   var branch=(row[3]||'').trim();if(!branch)continue;\r\n   var am=(row[2]||'').trim();if(!am)continue;\r\n   var copyRaw=(row[5]||'').trim();\r\n   var copyLines=copyRaw.split('\\n').filter(function(x){return x.trim();});\r\n   var umkmName=copyLines.length?copyLines[0].trim():copyRaw;\r\n   var umkmAddr=copyLines.length>1?copyLines.slice(1).join(', ').trim():'';\r\n   var reqDate=parseIndoDate(row[1]);\r\n   var dateFinish=parseIndoDate(row[18]);\r\n   out.push({\r\n    reqDate:reqDate,am:am,branch:branch,jenis:(row[4]||'').trim(),umkmName:umkmName,umkmAddr:umkmAddr,\r\n    detailSize:(row[6]||'').trim(),namaRM:(row[11]||'').trim(),goodToGo:(row[12]||'').trim(),\r\n    briefStatus:(row[13]||'').trim(),designStatus:(row[14]||'').trim(),linkDesign:(row[15]||'').trim(),\r\n    ownerFeedback:(row[16]||'').trim(),deliveryStatus:(row[17]||'').trim(),dateFinish:dateFinish,\r\n    kepalaKlaster:(row[19]||'').trim(),fotoBukti:(row[20]||'').trim(),mapsLink:(row[10]||'').trim()\r\n   });\r\n  }\r\n  state.requests=out;return out;});\r\n}\r\n\r\nfunction loadSurveys(){\r\n return fetchCsv(gvizUrl(TAB_SV)).then(function(rows){\r\n  var f=findHdr(rows[0]);\r\n  var tsi=f('Timestamp'),ami=f('NAMA AREA MANAGER'),kki=f('NAMA KEPALA KLASTER'),mti=f('METODE SURVEY YANG DILAKUKAN'),\r\n      tgi=f('TANGGAL KUNJUNGAN ATAU CALL\/CHAT'),ni=f('NAMA TOKO UMKM'),mbi=f('MATERI BRANDING YANG TERPASANG DI UMKM INI'),\r\n      kli=f('TINGKAT KELAYAKAN KONDISI SPANDUK\/BANNER\/STICKER SAAT INI'),\r\n      noi=f('SEJAK PEMASANGAN, APAKAH ADA CUSTOMER YANG MEMPERHATIKAN ATAU MENGAMATI KE ARAH SPANDUK\/BANNER\/STICKER PANDAI GADAI?'),\r\n      nyi=f('APAKAH ADA CUSTOMER YANG BERTANYA MENGENAI LAYANAN ATAU PRODUK PANDAI GADAI SETELAH MELIHAT SPANDUK\/BANNER\/STICKER DI UMKM INI?'),\r\n      pdi=f('PRODUK GADAI APA YANG BIASANYA DITANYAKAN\/MENJADI BAHAN OBROLAN SETELAH CUSTOMER MELIHAT SPANDUK\/BANNER\/STICKER DI UMKM INI?'),\r\n      rci=f('APAKAH OWNER UMKM PERNAH MEREKOMENDASIKAN PANDAI GADAI KE CUSTOMER SETELAH ADANYA SPANDUK\/BANNER\/STICKER YANG TERPASANG?'),\r\n      nai=f('SEPENGETAHUAN OWNER, APAKAH CUSTOMER YANG SERING DATANG BERBELANJA KE UMKM INI MERUPAKAN NASABAH AKTIF GADAI?'),\r\n      cti=f('CATATAN TAMBAHAN');\r\n  var out=[];\r\n  for(var r=1;r<rows.length;r++){var row=rows[r];if(!row)continue;\r\n   var ts=tsi>=0?parseDMY(row[tsi]):null;\r\n   var nama=ni>=0?(row[ni]||'').trim():'';if(!ts&&!nama)continue;\r\n   out.push({ts:ts,am:ami>=0?(row[ami]||'').trim():'',kepalaKlaster:kki>=0?(row[kki]||'').trim():'',\r\n    metode:mti>=0?(row[mti]||'').trim():'',tglKunjungan:tgi>=0?parseDMY(row[tgi]):null,umkmName:nama,\r\n    materi:mbi>=0?(row[mbi]||'').trim():'',kelayakan:kli>=0?(parseFloat(row[kli])||null):null,\r\n    custNotice:noi>=0?(row[noi]||'').trim():'',custNanya:nyi>=0?(row[nyi]||'').trim():'',\r\n    produkDitanya:pdi>=0?(row[pdi]||'').trim():'',ownerRecommend:rci>=0?(row[rci]||'').trim():'',\r\n    nasabahAktif:nai>=0?(row[nai]||'').trim():'',catatan:cti>=0?(row[cti]||'').trim():''});\r\n  }\r\n  state.surveys=out;return out;});\r\n}\r\n\r\nfunction load(){\r\n setStatus('Memuat data\u2026','info');savePrefs();\r\n Promise.all([loadRequests(),loadSurveys()]).then(function(res){\r\n  $('tabs').style.display='flex';\r\n  if(!res[0].length){setStatus('Belum ada data request UMKM.','err');return;}\r\n  setStatus('\u2713 Termuat '+res[0].length+' request UMKM dan '+res[1].length+' hasil survey.','ok');\r\n  render();\r\n }).catch(function(err){\r\n  setStatus('Gagal memuat data. Coba klik Refresh lagi. ('+esc(String(err&&err.message||err))+')','err');\r\n });\r\n}\r\n\r\nfunction availableMonths(){var set={};state.requests.forEach(function(r){if(r.reqDate!=null)set[monthKey(r.reqDate)]=1;});return Object.keys(set).sort();}\r\n\r\nfunction deliveryClass(s){s=(s||'').toLowerCase();\r\n if(s.indexOf('sudah')>=0)return'done';if(s.indexOf('cancel')>=0)return'cancel';if(s)return'proses';return'blank';}\r\nfunction deliveryLabel(s){return s?s:'Belum diproses';}\r\n\r\n\/* status bertahap buat tabel Request & Pemasangan, turunan dari Good to go \/ Brief \/ Design \/ Owner Feedback \/ Delivery Status.\r\n   Urutan PIC per tahap ambil langsung dari header sheet: RM > Puspa Agustin (Brief) > Irhamnah (Design) > AM (Owner Feedback) > GA\/Procurement (Delivery) > Kepala Klaster (Foto Bukti) *\/\r\nfunction computeStage(r){\r\n var gtg=(r.goodToGo||'').trim().toLowerCase();\r\n var brief=(r.briefStatus||'').trim().toLowerCase();\r\n var design=(r.designStatus||'').trim().toLowerCase();\r\n var owner=(r.ownerFeedback||'').trim().toLowerCase();\r\n var delivery=(r.deliveryStatus||'').trim();\r\n var deliveryLower=delivery.toLowerCase();\r\n if(deliveryLower.indexOf('sudah')>=0)return{label:'Sudah Terpasang',cls:'done',pic:'',stage:'done'};\r\n if(deliveryLower.indexOf('cancel')>=0||gtg==='cancel')return{label:'Cancel',cls:'cancel',pic:'',stage:'cancel'};\r\n if(owner==='rejected')return{label:'Desain Ditolak Owner',cls:'cancel',pic:'AM',stage:'rejected'};\r\n if(delivery)return{label:delivery,cls:'proses',pic:'GA\/Procurement',stage:'delivery'};\r\n if(owner==='approved')return{label:'Siap Cetak\/Kirim',cls:'proses',pic:'GA\/Procurement',stage:'siap_kirim'};\r\n if(brief==='done'&&design==='done')return{label:'Nunggu Feedback Owner',cls:'proses',pic:'AM',stage:'nunggu_owner'};\r\n if(brief==='done')return{label:'Nunggu Design',cls:'proses',pic:'Irhamnah',stage:'nunggu_design'};\r\n if(gtg==='ok')return{label:'Nunggu Brief',cls:'proses',pic:'Puspa Agustin',stage:'nunggu_brief'};\r\n if(!gtg)return{label:'Nunggu Review RM',cls:'blank',pic:'RM',stage:'nunggu_rm'};\r\n return{label:'Belum Diproses',cls:'blank',pic:'',stage:'belum'};\r\n}\r\n\r\nfunction render(){\r\n var months=availableMonths();\r\n var sel=$('sel-month');sel.disabled=false;\r\n var optHtml='<option value=\"\">Semua Bulan<\/option>'+months.slice().reverse().map(function(m){return '<option value=\"'+m+'\">'+esc(monthLabel(m))+'<\/option>';}).join('');\r\n if(sel.innerHTML!==optHtml)sel.innerHTML=optHtml;\r\n if(state.monthAuto&&months.length)state.selectedMonth=months[months.length-1];\r\n sel.value=state.selectedMonth||'';\r\n\r\n syncTabs();\r\n var filtered=state.selectedMonth?state.requests.filter(function(r){return r.reqDate!=null&&monthKey(r.reqDate)===state.selectedMonth;}):state.requests.slice();\r\n var label=state.selectedMonth?monthLabel(state.selectedMonth):'semua bulan';\r\n\r\n var done=0,cancel=0,amSet={};\r\n filtered.forEach(function(r){var cls=deliveryClass(r.deliveryStatus);if(cls==='done')done++;\r\n  if(cls==='cancel'||r.goodToGo.toLowerCase()==='cancel'||r.ownerFeedback.toLowerCase()==='rejected')cancel++;\r\n  if(r.am)amSet[r.am]=1;});\r\n var proses=filtered.length-done-cancel;if(proses<0)proses=0;\r\n\r\n $('k-total').textContent=filtered.length;\r\n $('k-total-sub').textContent=label;\r\n $('k-am').textContent=Object.keys(amSet).length;\r\n $('k-done').textContent=done;\r\n $('k-proses').textContent=proses;\r\n $('k-cancel').textContent=cancel;\r\n\r\n renderRing(filtered,label);\r\n renderRequestTable();\r\n renderSurveyTable();\r\n renderSurveyCharts();\r\n\r\n $('footer-note').style.display='block';\r\n $('footer-note').innerHTML='Rentang: '+esc(label)+' \u2022 '+filtered.length+' request \u2022 diperbarui '+new Date().toLocaleString('id-ID');\r\n}\r\n\r\nvar RINGCOLS=[{k:'rank',t:'#',l:true,s:false},{k:'am',t:'AM',l:true,s:true},{k:'count',t:'Request',s:true},\r\n {k:'target',t:'Target',s:false},{k:'done',t:'Sudah Terpasang',s:true},{k:'cancel',t:'Cancel\/Rejected',s:true},{k:'status',t:'Status',l:true,s:false}];\r\nfunction getAllAMs(){var set={};state.requests.forEach(function(r){if(r.am)set[r.am]=1;});return Object.keys(set);}\r\n\r\nfunction renderRing(filtered,label){\r\n $('ring-sub').textContent=label;\r\n var t=target();\r\n var agg={};\r\n getAllAMs().forEach(function(am){agg[am]={am:am,count:0,done:0,cancel:0};});\r\n filtered.forEach(function(r){if(!r.am)return;if(!agg[r.am])agg[r.am]={am:r.am,count:0,done:0,cancel:0};\r\n  var a=agg[r.am];a.count++;var cls=deliveryClass(r.deliveryStatus);\r\n  if(cls==='done')a.done++;\r\n  if(cls==='cancel'||r.goodToGo.toLowerCase()==='cancel'||r.ownerFeedback.toLowerCase()==='rejected')a.cancel++;\r\n });\r\n var arr=Object.keys(agg).map(function(k){return agg[k];});\r\n var sk=state.sortRank.key,sd=state.sortRank.dir;\r\n arr.sort(function(a,b){var x=a[sk],y=b[sk];if(typeof x==='string')return sd*x.localeCompare(y);return sd*((x||0)-(y||0));});\r\n var th=$('ring-thead');th.innerHTML='';\r\n RINGCOLS.forEach(function(c){var el=document.createElement('th');\r\n  el.textContent=c.t+(state.sortRank.key===c.k?(sd<0?' \u25bc':' \u25b2'):'');\r\n  el.className=(c.l?'l':'')+(state.sortRank.key===c.k?' sorted':'');\r\n  if(c.s)el.onclick=function(){if(state.sortRank.key===c.k)state.sortRank.dir*=-1;else{state.sortRank.key=c.k;state.sortRank.dir=(c.k==='am')?1:-1;}render();};\r\n  th.appendChild(el);});\r\n var tb=$('ring-tbody');tb.innerHTML='';\r\n if(!arr.length){tb.innerHTML='<tr><td colspan=\"7\" class=\"muted\" style=\"padding:1rem;text-align:center\">Belum ada request di rentang ini.<\/td><\/tr>';return;}\r\n arr.forEach(function(a,i){var ok=a.done>=t;\r\n  tb.insertAdjacentHTML('beforeend','<tr><td class=\"l rank\">'+(i+1)+'<\/td>'+\r\n   '<td class=\"l branch\">'+esc(a.am)+'<\/td>'+\r\n   '<td style=\"font-weight:800\">'+nf(a.count)+'<\/td>'+\r\n   '<td class=\"muted\">'+t+'<\/td>'+\r\n   '<td style=\"font-weight:700;color:var(--success)\">'+nf(a.done)+'<\/td>'+\r\n   '<td style=\"font-weight:700;color:var(--destructive)\">'+nf(a.cancel)+'<\/td>'+\r\n   '<td class=\"l\"><span class=\"stcell '+(ok?'st-ok':'st-warn')+'\">'+(ok?'\u2713 Tercapai':'Belum capai target')+'<\/span><\/td><\/tr>');\r\n });\r\n}\r\n\r\nfunction genericBadgeClass(v){\r\n v=(v||'').trim().toLowerCase();\r\n if(!v)return'blank';\r\n if(v==='cancel'||v==='rejected')return'cancel';\r\n if(v==='ok'||v==='done'||v==='approved'||v.indexOf('sudah')>=0)return'done';\r\n return'proses';\r\n}\r\nfunction badgeOrDash(v){v=(v||'').trim();return v?('<span class=\"badge '+genericBadgeClass(v)+'\">'+esc(v)+'<\/span>'):'<span class=\"badge blank\">\u2014<\/span>';}\r\n\r\nvar REQCOLS=[{k:'rank',t:'#',l:true,s:false},{k:'reqDate',t:'Tgl Request',s:true},{k:'am',t:'AM',l:true,s:true},\r\n {k:'branch',t:'Cabang',l:true,s:true},{k:'umkmName',t:'Nama UMKM',l:true,s:true},{k:'jenis',t:'Jenis Media',l:true,s:true},\r\n {k:'goodToGo',t:'Good to go?',l:true,s:true},{k:'briefStatus',t:'Brief',l:true,s:true},{k:'designStatus',t:'Design',l:true,s:true},\r\n {k:'ownerFeedback',t:'Owner Feedback',l:true,s:true},{k:'deliveryStatus',t:'Delivery',l:true,s:true},\r\n {k:'stageLabel',t:'Tahap & PIC',l:true,s:true},{k:'dateFinish',t:'Tgl Selesai',s:true},{k:'kepalaKlaster',t:'Kepala Klaster',l:true,s:true},{k:'foto',t:'Bukti',l:true,s:false}];\r\nfunction renderRequestTable(){\r\n var filtered=state.selectedMonth?state.requests.filter(function(r){return r.reqDate!=null&&monthKey(r.reqDate)===state.selectedMonth;}):state.requests.slice();\r\n var label=state.selectedMonth?monthLabel(state.selectedMonth):'semua bulan';\r\n $('req-sub').textContent=label+' \u2022 '+filtered.length+' request';\r\n filtered.forEach(function(r){var st=computeStage(r);r.stageLabel=st.label;r.stageCls=st.cls;r.stagePic=st.pic;r.stageKey=st.stage;});\r\n var sk=state.sortReq.key,sd=state.sortReq.dir;\r\n var sorted=filtered.slice().sort(function(a,b){var x=a[sk],y=b[sk];\r\n  if(sk==='reqDate'||sk==='dateFinish'){x=x==null?-Infinity:x;y=y==null?-Infinity:y;return sd*(x-y);}\r\n  if(typeof x==='string')return sd*x.localeCompare(y);return sd*((x||0)-(y||0));});\r\n var th=$('req-thead');th.innerHTML='';\r\n REQCOLS.forEach(function(c){var el=document.createElement('th');\r\n  el.textContent=c.t+(state.sortReq.key===c.k?(sd<0?' \u25bc':' \u25b2'):'');\r\n  el.className=(c.l?'l':'')+(state.sortReq.key===c.k?' sorted':'');\r\n  if(c.s)el.onclick=function(){if(state.sortReq.key===c.k)state.sortReq.dir*=-1;else{state.sortReq.key=c.k;state.sortReq.dir=(['am','branch','umkmName','jenis','goodToGo','briefStatus','designStatus','ownerFeedback','deliveryStatus','stageLabel','kepalaKlaster'].indexOf(c.k)>=0)?1:-1;}renderRequestTable();};\r\n  th.appendChild(el);});\r\n var body=$('req-tbody');body.innerHTML='';\r\n if(!sorted.length){body.innerHTML='<tr><td colspan=\"15\" class=\"muted\" style=\"padding:1rem;text-align:center\">Belum ada request di rentang ini.<\/td><\/tr>';return;}\r\n sorted.forEach(function(r,i){\r\n  body.insertAdjacentHTML('beforeend','<tr><td class=\"l rank\">'+(i+1)+'<\/td>'+\r\n   '<td class=\"muted\">'+dmy(r.reqDate)+'<\/td>'+\r\n   '<td class=\"l\">'+esc(r.am)+'<\/td>'+\r\n   '<td class=\"l branch\">'+esc(r.branch)+'<\/td>'+\r\n   '<td class=\"l\">'+esc(clip(r.umkmName,28))+(r.mapsLink?(' <a href=\"'+esc(r.mapsLink)+'\" target=\"_blank\" rel=\"noopener\" style=\"color:var(--primary)\">\ud83d\udccd<\/a>'):'')+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(r.jenis)+'<\/td>'+\r\n   '<td class=\"l\">'+badgeOrDash(r.goodToGo)+'<\/td>'+\r\n   '<td class=\"l\">'+badgeOrDash(r.briefStatus)+'<\/td>'+\r\n   '<td class=\"l\">'+badgeOrDash(r.designStatus)+'<\/td>'+\r\n   '<td class=\"l\">'+badgeOrDash(r.ownerFeedback)+'<\/td>'+\r\n   '<td class=\"l\">'+badgeOrDash(r.deliveryStatus)+'<\/td>'+\r\n   '<td class=\"l\"><span class=\"badge '+r.stageCls+'\">'+esc(r.stageLabel)+'<\/span>'+(r.stagePic?'<div class=\"muted\" style=\"font-size:.68rem;margin-top:.15rem\">PIC: '+esc(r.stagePic)+'<\/div>':'')+'<\/td>'+\r\n   '<td class=\"muted\">'+dmy(r.dateFinish)+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(r.kepalaKlaster)+'<\/td>'+\r\n   '<td class=\"l\">'+(r.fotoBukti?'<a href=\"'+esc(r.fotoBukti)+'\" target=\"_blank\" rel=\"noopener\" style=\"color:var(--primary);font-weight:700\">Foto \u2197<\/a>':'\u2014')+'<\/td><\/tr>');\r\n });\r\n}\r\n\r\nfunction renderSurveyTable(){\r\n var arr=state.surveys.slice().sort(function(a,b){return (b.ts||0)-(a.ts||0);});\r\n $('sv-sub').textContent=arr.length+' submission';\r\n var th=$('sv-thead');\r\n th.innerHTML='<th class=\"l\">Tgl Submit<\/th><th class=\"l\">AM<\/th><th class=\"l\">Kepala Klaster<\/th><th class=\"l\">UMKM<\/th>'+\r\n  '<th class=\"l\">Metode<\/th><th>Kelayakan<\/th><th class=\"l\">Customer Notice?<\/th><th class=\"l\">Customer Nanya?<\/th>'+\r\n  '<th class=\"l\">Produk Ditanya<\/th><th class=\"l\">Owner Recommend?<\/th><th class=\"l\">Catatan<\/th>';\r\n var tb=$('sv-tbody');tb.innerHTML='';\r\n if(!arr.length){tb.innerHTML='<tr><td colspan=\"11\" class=\"muted\" style=\"padding:1rem;text-align:center\">Belum ada survey masuk.<\/td><\/tr>';return;}\r\n arr.forEach(function(s){\r\n  tb.insertAdjacentHTML('beforeend','<tr><td class=\"l muted\">'+dmy(s.ts)+'<\/td>'+\r\n   '<td class=\"l\">'+esc(s.am)+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(s.kepalaKlaster)+'<\/td>'+\r\n   '<td class=\"l branch\">'+esc(clip(s.umkmName,24))+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(s.metode)+'<\/td>'+\r\n   '<td style=\"font-weight:700\">'+(s.kelayakan!=null?s.kelayakan:'\u2014')+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(s.custNotice)+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(s.custNanya)+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(s.produkDitanya)+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(s.ownerRecommend)+'<\/td>'+\r\n   '<td class=\"l muted\">'+esc(clip(s.catatan,40))+'<\/td><\/tr>');\r\n });\r\n}\r\n\r\n\/* ---- donut chart buat jawaban pilihan ganda survey ---- *\/\r\nvar PIE_PALETTE=['#02439F','#FFCD05','#047857','#dc2626','#0255CA','#7c3aed','#0891b2','#d97706'];\r\nfunction polarToXY(cx,cy,r,deg){var a=(deg-90)*Math.PI\/180;return{x:cx+r*Math.cos(a),y:cy+r*Math.sin(a)};}\r\nfunction pieSliceD(cx,cy,r,startDeg,endDeg){\r\n var start=polarToXY(cx,cy,r,startDeg),end=polarToXY(cx,cy,r,endDeg);\r\n var large=(endDeg-startDeg)>180?1:0;\r\n return ['M',cx,cy,'L',start.x.toFixed(2),start.y.toFixed(2),'A',r,r,0,large,1,end.x.toFixed(2),end.y.toFixed(2),'Z'].join(' ');\r\n}\r\nfunction countValues(arr,getter){var counts={};arr.forEach(function(x){var v=(getter(x)||'').trim();if(!v)return;counts[v]=(counts[v]||0)+1;});return counts;}\r\nfunction pieCardHtml(title,counts){\r\n var keys=Object.keys(counts).sort(function(a,b){return counts[b]-counts[a];});\r\n var total=keys.reduce(function(s,k){return s+counts[k];},0);\r\n if(!total)return '<div class=\"pie-card\"><h4>'+esc(title)+'<\/h4><div class=\"muted\" style=\"font-size:.75rem;padding:.5rem 0\">Belum ada data<\/div><\/div>';\r\n var cx=60,cy=60,r=55,angle=0;\r\n var svg='<svg viewBox=\"0 0 120 120\" width=\"120\" height=\"120\">';\r\n var legend='';\r\n keys.forEach(function(k,i){\r\n  var val=counts[k],pct=val\/total*100,sweep=pct\/100*360,color=PIE_PALETTE[i%PIE_PALETTE.length];\r\n  var dattrs='data-label=\"'+esc(k)+'\" data-val=\"'+val+'\" data-pct=\"'+pct.toFixed(1)+'\"';\r\n  if(keys.length===1){svg+='<circle cx=\"'+cx+'\" cy=\"'+cy+'\" r=\"'+r+'\" fill=\"'+color+'\" '+dattrs+'\/>';}\r\n  else{svg+='<path d=\"'+pieSliceD(cx,cy,r,angle,angle+sweep)+'\" fill=\"'+color+'\" '+dattrs+'\/>';}\r\n  angle+=sweep;\r\n  legend+='<div class=\"pie-legend-row\"><span class=\"pie-sw\" style=\"background:'+color+'\"><\/span>'+esc(clip(k,24))+'<b>'+val+' ('+pct.toFixed(0)+'%)<\/b><\/div>';\r\n });\r\n svg+='<\/svg>';\r\n return '<div class=\"pie-card\"><h4>'+esc(title)+'<\/h4><div style=\"display:flex;gap:.8rem;align-items:center;flex-wrap:wrap\"><div style=\"flex-shrink:0\">'+svg+'<\/div><div style=\"flex:1;min-width:120px\">'+legend+'<\/div><\/div><\/div>';\r\n}\r\nfunction showPieTip(e,el){\r\n var tip=$('pie-tip'),wrap=el.closest('.pie-wrap');if(!tip||!wrap)return;\r\n var rect=wrap.getBoundingClientRect();\r\n tip.innerHTML='<b>'+esc(el.getAttribute('data-label'))+'<\/b><br>'+el.getAttribute('data-val')+' response ('+el.getAttribute('data-pct')+'%)';\r\n tip.style.display='block';\r\n var left=e.clientX-rect.left+14,top=e.clientY-rect.top+14;\r\n if(left+180>wrap.clientWidth)left=e.clientX-rect.left-190;\r\n tip.style.left=left+'px';tip.style.top=top+'px';\r\n}\r\nfunction hidePieTip(){var tip=$('pie-tip');if(tip)tip.style.display='none';}\r\nfunction attachPieHover(){\r\n var els=document.querySelectorAll('#pie-grid svg path, #pie-grid svg circle');\r\n els.forEach(function(el){\r\n  el.addEventListener('mousemove',function(e){showPieTip(e,el);});\r\n  el.addEventListener('mouseleave',hidePieTip);\r\n });\r\n}\r\nfunction renderSurveyCharts(){\r\n var arr=state.surveys;\r\n $('sv-chart-sub').textContent=arr.length+' submission';\r\n var grid=$('pie-grid');\r\n if(!arr.length){grid.innerHTML='<div class=\"muted\" style=\"font-size:.8rem;padding:.5rem 0\">Belum ada survey masuk.<\/div>';return;}\r\n var cards=[\r\n  pieCardHtml('Metode Survey',countValues(arr,function(x){return x.metode;})),\r\n  pieCardHtml('Customer perhatiin spanduk\/banner\/sticker?',countValues(arr,function(x){return x.custNotice;})),\r\n  pieCardHtml('Customer nanya produk gadai?',countValues(arr,function(x){return x.custNanya;})),\r\n  pieCardHtml('Produk yang ditanya',countValues(arr,function(x){return x.produkDitanya;})),\r\n  pieCardHtml('Owner recommend Pandai Gadai?',countValues(arr,function(x){return x.ownerRecommend;})),\r\n  pieCardHtml('Sepengetahuan owner, nasabah aktif?',countValues(arr,function(x){return x.nasabahAktif;}))\r\n ];\r\n grid.innerHTML=cards.join('');\r\n attachPieHover();\r\n}\r\n\r\nfunction syncTabs(){\r\n var tabs=document.querySelectorAll('#tabs button');for(var i=0;i<tabs.length;i++)tabs[i].classList.toggle('active',tabs[i].getAttribute('data-tab')===state.tab);\r\n ['ringkasan','request','survey'].forEach(function(p){var el=$('pane-'+p);if(el)el.style.display=(state.tab===p)?'block':'none';});\r\n}\r\n\r\nwindow.UB={\r\n load:load,\r\n render:function(){savePrefs();if(state.requests.length)render();},\r\n setTab:function(t){state.tab=t;savePrefs();syncTabs();},\r\n setMonth:function(ym){state.selectedMonth=ym||null;state.monthAuto=false;savePrefs();render();}\r\n};\r\n\r\nloadPrefs();load();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"disabled","ast-banner-title-visibility":"disabled","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"disabled","ast-disable-related-posts":"disabled","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2945","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Julia Afildah","author_link":"https:\/\/pandaigadai.com\/blog\/author\/julia-afildah\/"},"uagb_comment_info":0,"uagb_excerpt":null,"_links":{"self":[{"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/pages\/2945","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/comments?post=2945"}],"version-history":[{"count":3,"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/pages\/2945\/revisions"}],"predecessor-version":[{"id":2949,"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/pages\/2945\/revisions\/2949"}],"wp:attachment":[{"href":"https:\/\/pandaigadai.com\/blog\/wp-json\/wp\/v2\/media?parent=2945"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}