{"id":191306,"date":"2026-03-25T16:16:56","date_gmt":"2026-03-25T09:16:56","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=191306"},"modified":"2026-04-21T08:20:17","modified_gmt":"2026-04-21T01:20:17","slug":"quantity-takeoff","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/","title":{"rendered":"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Dalam proyek konstruksi, <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> menjadi langkah penting yang membantu tim menghitung kebutuhan material, tenaga kerja, dan peralatan sejak awal. Proses ini menjadi semakin kompleks karena banyaknya revisi gambar, perubahan spesifikasi, dan tuntutan efisiensi menuntut estimasi proyek yang cepat dan sesuai.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Karena itu, banyak tim prakonstruksi kini memakai <\/span><i><span style=\"font-weight: 400;\">Building Information Modelling<\/span><\/i><span style=\"font-weight: 400;\"> (BIM) atau sistem <\/span><i><span style=\"font-weight: 400;\">takeoff<\/span><\/i><span style=\"font-weight: 400;\"> berbasis <\/span><i><span style=\"font-weight: 400;\">cloud<\/span><\/i><span style=\"font-weight: 400;\"> untuk menghubungkan perhitungan kuantitas dengan biaya, material, dan kebutuhan tenaga kerja secara lebih konsisten. Hasilnya, tim bisa menyusun anggaran dengan lebih akurat, menekan risiko <\/span><i><span style=\"font-weight: 400;\">cost overrun<\/span><\/i><span style=\"font-weight: 400;\">, mengurangi <\/span><i><span style=\"font-weight: 400;\">rework<\/span><\/i><span style=\"font-weight: 400;\">, dan menjaga proyek tetap berjalan sesuai rencana.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pada artikel di bawah, kita akan membahas pentingnya <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> untuk mewujudkan proyek konstruksi yang lancar dan minim hambatan.<\/span><\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#apa-itu-quantity-takeoff-dalam-proyek-konstruksi\">Quantity takeoff<\/a> membantu tim konstruksi menghitung kebutuhan material, tenaga kerja, dan peralatan secara lebih akurat sebelum proyek berjalan sehingga anggaran proyek dapat lebih dikontrol.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#mengapa-quantity-takeoff-sangat-krusial\">Ketelitian dalam proses takeoff<\/a> sangat penting karena salah hitung kecil bisa memicu pemborosan material, revisi anggaran, keterlambatan pekerjaan, hingga turunnya margin proyek yang bisa cukup merugikan bagi perusahaan.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Saat ini, banyak tim konstruksi mulai memadukan ketelitian estimator dengan alat digital seperti <a href=\"#tantangan-umum-dalam-proses-estimasi-kuantitas-dan-solusinya\">Building Information Modelling (BIM), cloud, dan otomatisasi<\/a> agar proses hitung lebih cepat dan siap dalam menghadapi revisi desain.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n<!-- \t\t\t<div class=\"button-wrapper\">\r\n\t\t\t\t<a href=\"https:\/\/www.equiperp.com\/tour-produk-gratis\/?medium=key-takeaways\" class=\"submit-button\">Klik untuk Demo Gratis!<\/a>\r\n\t\t\t<\/div> -->\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2><b>Apa Itu <\/b><b><i>Quantity Takeoff<\/i><\/b><b> dalam Proyek Konstruksi?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\"><span id=\"umumnya\">Umumnya, <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> merupakan proses menghitung kebutuhan material, tenaga kerja, dan peralatan berdasarkan gambar kerja serta spesifikasi teknis proyek. Tim estimator memakai proses ini untuk mengambil data kuantitas dari desain lalu mengubahnya menjadi daftar kebutuhan yang lebih nyata dan terukur.\u00a0<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Saat ini, proses tersebut tidak selalu bergantung pada hitungan manual, karena banyak perusahaan juga memanfaatkan <\/span><i><span style=\"font-weight: 400;\">Building Information Modelling<\/span><\/i><span style=\"font-weight: 400;\"> (BIM) atau alat bantu berbasis <\/span><i><span style=\"font-weight: 400;\">cloud<\/span><\/i><span style=\"font-weight: 400;\"> agar hasilnya lebih rapi dan akurat. Dalam praktiknya, <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> menjadi langkah awal yang sangat penting sebelum tim <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/bill-of-quantity\/\">menyusun <em>Bill of Quantities<\/em> (BOQ)<\/a><\/span><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Gambar desain hanya menunjukkan bentuk dan detail bangunan, sedangkan proses ini membantu tim memahami berapa banyak sumber daya yang benar-benar dibutuhkan sebelum pekerjaan dimulai. Hasil akhirnya bisa mencakup banyak hal, contohnya seperti perhitungan volume beton, jumlah bata, luas keramik, hingga perkiraan jam kerja untuk setiap tahap konstruksi.<\/span><\/p>\n<h2><b>Elemen-Elemen Utama <\/b><b><i>Quantity Takeoff<\/i><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Untuk membuat <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> yang akurat, estimator perlu membagi proyek ke beberapa elemen utama agar tidak ada pekerjaan yang terlewat. Berikut adalah elemen-elemennya:<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">1. Kebutuhan material<\/b><\/h3>\n<p><b><\/b><span style=\"font-weight: 400;\">Material biasanya menjadi komponen terbesar dalam anggaran konstruksi. Karena itu, estimator perlu menghitung panjang, luas, volume, atau jumlah unit dari setiap item, contohnya seperti pipa, kabel, beton, cat, keramik, hingga pintu dan jendela. Perhitungan yang rinci membantu tim menyusun Rencana Anggaran Biaya (RAB) dengan dasar yang lebih akurat.<\/span><\/p>\n<h3><b>2. Kebutuhan tenaga kerja<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Setelah menentukan jumlah material, tim juga perlu menghitung tenaga kerja yang dibutuhkan untuk menyelesaikan tiap pekerjaan. Biasanya, perhitungan ini melihat jenis keahlian, produktivitas, dan durasi kerja agar jadwal proyek lebih realistis. Dengan begitu, perusahaan tidak hanya tahu berapa orang yang dibutuhkan, tetapi juga berapa lama pekerjaan bisa selesai.<\/span><\/p>\n<h3><b>3. Kebutuhan peralatan dan mesin<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Proyek konstruksi juga bergantung pada alat dan mesin, terutama untuk pekerjaan skala besar. Estimator perlu menilai jenis alat, kapasitas, lama pemakaian, sampai biaya mobilisasi agar perencanaan lapangan lebih tepat. Langkah ini penting supaya penggunaan alat tidak berlebihan atau kurang.<\/span><\/p>\n<h3><b>4. <em>Waste factor<\/em><\/b><\/h3>\n<p>Dalam praktiknya, material tidak selalu terpakai 100 persen sesuai hitungan awal. Selalu ada risiko sisa potongan, kerusakan saat pengiriman, atau kesalahan pemasangan. Karena itu, estimator biasanya menambahkan waste factor yang wajar agar kebutuhan material lebih realistis dan proyek tidak terganggu karena kekurangan stok.<b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\"><br \/>\n<\/b><\/p>\n<h2><b>Mengapa <\/b><b><i>Quantity Takeoff<\/i><\/b><b> Sangat Krusial?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\"><span id=\"keakuratan\">Keakuratan <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> akan memberi dampak besar ke seluruh siklus proyek. Jika gambar kerja sering berubah dan tim harus bergerak cepat, data kuantitas yang presisi membantu kontraktor menjaga anggaran, menyusun jadwal, dan mengurangi salah hitung sejak awal. Di bawah ini, Anda akan dapat memahami pentingnya <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> secara detail:<\/span><\/span><\/p>\n<h3><b>1. Akurasi anggaran dan penawaran<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Dalam proses tender, hitungan kuantitas yang terlalu tinggi bisa membuat penawaran kalah bersaing. Sebaliknya, hitungan yang terlalu rendah bisa membuat <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/strategi-menang-tender-proyek\/\"><span style=\"font-weight: 400;\">kontraktor menang tender<\/span><\/a><span style=\"font-weight: 400;\"> tetapi kehilangan margin saat proyek berjalan. Itulah sebabnya <\/span><i><span style=\"font-weight: 400;\">takeoff<\/span><\/i><span style=\"font-weight: 400;\"> yang akurat menjadi dasar penting untuk menyusun penawaran yang masuk akal, kompetitif, dan tetap aman secara finansial.<\/span><\/p>\n<h3><b>2. Pengadaan material dan penjadwalan<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Data <\/span><i><span style=\"font-weight: 400;\">takeoff<\/span><\/i><span style=\"font-weight: 400;\"> juga membantu tim pengadaan memesan material sesuai kebutuhan proyek karena jika jumlah material, fase pekerjaan, dan jadwal saling terhubung, tim bisa mengurangi risiko penumpukan atau kekurangan stok serta memastikan proses pekerjaan tetap berjalan.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pendekatan ini semakin penting saat proyek menuntut pembaruan cepat dari gambar terbaru dan koordinasi antara kantor dengan lapangan.<\/span><\/p>\n<h3><b>3. Koordinasi dengan subkontraktor<\/b><\/h3>\n<p>Proyek besar hampir selalu melibatkan banyak pihak. Daftar kuantitas yang jelas membantu kontraktor utama dan subkontraktor menyepakati ruang lingkup kerja, volume pekerjaan, dan dasar pembayaran yang lebih transparan.<\/p>\n<p><span style=\"font-weight: 400;\">Hasilnya, tim bisa mengurangi salah paham agar tidak berdampak pada bertambahnya biaya yang tidak perlu atau konflik proyek lainnya.<\/span><\/p>\n<h3><b>4. Mitigasi risiko proyek<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Saat estimator membedah proyek sampai ke komponen kecil, tim lebih mudah melihat area yang berpotensi menimbulkan masalah. Misalnya, perubahan volume pekerjaan, kebutuhan alat tambahan, atau <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/variation-order-adalah\/\"><span style=\"font-weight: 400;\">dampak revisi desain pada biaya<\/span><\/a><span style=\"font-weight: 400;\"> dan waktu bisa terlihat lebih cepat.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dengan begitu, manajer proyek dapat menyiapkan langkah antisipasi lebih awal sebelum risiko berubah menjadi keterlambatan atau pembengkakan biaya.<\/span><\/p>\n<h2><b>Metode Pelaksanaan <\/b><b><i>Quantity Takeoff<\/i><\/b><b>: Manual vs Digital<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Metode <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> terus berkembang karena kebutuhan proyek kini menuntut perhitungan yang lebih cepat, rapi, dan mudah diperbarui. Secara umum, ada dua pendekatan yang masih sering digunakan, yaitu metode manual dan metode digital.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Keduanya sama-sama bertujuan menghasilkan hitungan kuantitas yang akurat, tetapi cara kerja dan tingkat efisiensinya cukup berbeda.<\/span><\/p>\n<h3><b>Metode Manual: Pendekatan Tradisional<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Pada metode manual, estimator menghitung kebutuhan proyek langsung dari gambar cetak dengan bantuan penggaris skala, kalkulator, stabilo, dan catatan kerja. Cara ini membantu estimator memahami detail bangunan secara lebih dekat karena setiap elemen dibaca dan dihitung satu per satu.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Namun, proses manual cenderung memakan waktu lebih lama, lebih rentan terhadap salah baca skala atau salah input, serta lebih sulit diperbarui saat gambar mengalami revisi.<\/span><\/p>\n<h3><b>Metode Digital: Cara Kerja yang Lebih Cepat dan Efisien<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Metode digital membuat proses <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> lebih cepat dan lebih rapi karena estimator dapat menghitung kuantitas dari file PDF, <\/span><i><span style=\"font-weight: 400;\">Computer-Aided Design<\/span><\/i><span style=\"font-weight: 400;\"> (CAD), atau model 2D dan 3D. Selain itu, data perhitungan juga bisa langsung terhubung dengan biaya, material, dan kebutuhan tenaga kerja dalam sistem yang lebih terpusat.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Saat desain berubah, tim pun dapat memperbarui hitungan tanpa mengulang proses dari awal, sehingga banyak perusahaan mulai beralih ke metode ini untuk menekan kesalahan dan menjaga kontrol anggaran proyek.<\/span><\/p>\n<h2 id=\"langkah-strategis-takeoff\"><b>Langkah-langkah Strategis Melakukan <\/b><b><i>Quantity Takeoff<\/i><\/b><b> yang Akurat<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-191333\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro.webp\" alt=\"Infografis langkah quantity takeoff\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-300x200.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-1024x683.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-768x512.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-630x420.webp 630w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-150x100.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-696x464.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/infografis-langkah-quantity-takeoff-hashmicro-1068x712.webp 1068w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Agar hasil <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> akurat, estimator tidak bisa langsung menghitung dari gambar secara acak. Mereka perlu mengikuti alur kerja yang rapi supaya setiap angka benar-benar bisa dipakai untuk <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/contoh-rab\/\"><span style=\"font-weight: 400;\">menyusun RAB<\/span><\/a><span style=\"font-weight: 400;\">, BOQ, hingga kebutuhan pengadaan. Saat ini, langkah tersebut semakin penting karena tim sering bekerja dengan banyak revisi gambar, dokumen digital, dan koordinasi lintas divisi dalam satu sistem proyek.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">1. Tinjau seluruh dokumen proyek<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Estimator perlu membaca gambar arsitektur, struktur, komponen <\/span><i><span style=\"font-weight: 400;\">Mechanical, Electrical, and Plumbing<\/span><\/i><span style=\"font-weight: 400;\"> (MEP) bangunan, dan spesifikasi teknis secara menyeluruh sebelum mulai menghitung. Langkah ini tidak boleh dilewatkan karena banyak detail pekerjaan, material, dan ruang lingkup proyek tidak selalu terlihat jelas hanya dari denah. Dalam praktik modern, tim juga perlu memastikan mereka membuka dokumen yang benar dan sudah disetujui.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">2. Verifikasi skala dan cek revisi gambar<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sebelum mengukur, estimator harus memastikan skala gambar sudah tepat. Pada dokumen digital, mereka biasanya mengkalibrasi ukuran lebih dulu lalu membandingkan versi gambar untuk melihat perubahan yang bisa memengaruhi kuantitas. Langkah ini membantu tim menghindari salah hitung akibat revisi desain atau penggunaan file yang sudah tidak berlaku.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">3. Susun pekerjaan berdasarkan struktur yang jelas<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Agar perhitungan tidak tumpang tindih, proyek perlu dibagi ke kelompok kerja yang rapi, misalnya per divisi, area, atau jenis pekerjaan. Struktur seperti ini memudahkan estimator saat menghitung, memeriksa ulang, dan menghubungkan hasil <\/span><i><span style=\"font-weight: 400;\">takeoff<\/span><\/i><span style=\"font-weight: 400;\"> ke kode anggaran atau sistem estimasi. Hasilnya, data jadi lebih mudah dilacak dan lebih siap dipakai oleh tim lain.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">4. Lakukan pengukuran dan pencatatan secara sistematis<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Setelah struktur kerja siap, estimator mulai mengukur dan mencatat kuantitas material yang dibutuhkan dari gambar atau model proyek. Mereka biasanya bekerja per lantai, per area, atau per kategori agar tidak ada item yang terlewat. Pada sistem digital, proses ini jauh lebih cepat karena kuantitas bisa ditarik dari <\/span><i><span style=\"font-weight: 400;\">sheet<\/span><\/i><span style=\"font-weight: 400;\">, model, dan data proyek yang saling terhubung.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">5. Sesuaikan dengan kondisi lapangan dan faktor pemborosan<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Hasil hitungan awal belum bisa dipakai jika belum dicocokkan dengan kondisi di lapangan. Estimator tetap perlu memasukkan faktor seperti <\/span><i><span style=\"font-weight: 400;\">waste<\/span><\/i><span style=\"font-weight: 400;\">, metode kerja, asumsi produktivitas, atau kebutuhan tambahan yang sering muncul saat eksekusi. Penyesuaian ini membuat angka <\/span><i><span style=\"font-weight: 400;\">takeoff<\/span><\/i><span style=\"font-weight: 400;\"> lebih realistis dan membantu tim mengurangi selisih besar antara rencana dan pelaksanaan.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">6. Lakukan validasi akhir sebelum masuk ke estimasi<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sebelum data dipakai untuk menyusun biaya, tim perlu memeriksa ulang item penting, terutama pekerjaan bernilai besar atau yang paling sering berubah. Hal ini berguna untuk menentukan <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/estimasi-biaya-konstruksi\/\"><span style=\"font-weight: 400;\">estimasi biaya yang realistis<\/span><\/a><span style=\"font-weight: 400;\"> serta mencegah adanya salah input, kuantitas ganda, atau item yang terlewat. Selain itu, sistem dokumen terpusat juga membantu semua pihak bekerja dari sumber data yang sama untuk memastikan proses review yang lebih cepat dan akurat.<\/span><\/p>\n<h2><b>Tantangan Umum dalam Proses Estimasi Kuantitas dan Solusinya<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Meskipun estimator sudah bekerja teliti, proses <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> tetap punya banyak tantangan. Hambatannya bukan hanya soal hitung-hitungan, tetapi juga soal dokumen yang belum final, revisi desain yang terus bergerak, dan tuntutan material yang makin ketat.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Karena itu, tim prakonstruksi sekarang perlu menggabungkan ketelitian teknis dengan alur kerja digital yang lebih rapi agar hasil hitungan tetap akurat dan mudah dipertanggungjawabkan. Mari kita kenali jenis-jenis tantangan dalam proses estimasi kuantitas:<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">1. Gambar desain belum lengkap atau masih ambigu<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Estimator sering harus mulai menghitung saat detail proyek belum sepenuhnya matang. Akibatnya, ada gambar yang belum sinkron, spesifikasi yang belum final, atau informasi penting yang belum muncul jelas pada dokumen.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Solusinya, tim perlu segera mengajukan dokumen <\/span><i><span style=\"font-weight: 400;\">Request For Information<\/span><\/i><span style=\"font-weight: 400;\"> (RFI) untuk meminta klarifikasi, lalu mencatat setiap asumsi secara terbuka agar dasar perhitungannya tetap jelas saat masuk ke tahap estimasi atau tender.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">2. Revisi desain yang terus berubah<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Perubahan gambar masih menjadi tantangan besar karena satu revisi kecil bisa memengaruhi banyak item kuantitas. Jika tim masih mengecek perubahan secara manual, risiko salah hitung dan versi dokumen yang tertukar akan makin besar.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Karena itu, banyak tim sekarang mengandalkan fitur <\/span><i><span style=\"font-weight: 400;\">drawing comparison<\/span><\/i><span style=\"font-weight: 400;\">, <\/span><i><span style=\"font-weight: 400;\">overlay<\/span><\/i><span style=\"font-weight: 400;\">, dan sumber dokumen terpusat supaya perubahan terlihat lebih cepat dan estimator hanya perlu menghitung ulang bagian yang benar-benar berubah.<\/span><\/p>\n<h3><b style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">3. Regulasi material berkelanjutan (<em>sustainability<\/em>) yang semakin kompleks<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Tantangan berikutnya datang dari pemakaian material yang lebih ramah lingkungan. Estimator seringkali harus memahami juga data-data seperti <\/span><i><span style=\"font-weight: 400;\">embodied carbon<\/span><\/i><span style=\"font-weight: 400;\"> dan dokumen EPD (<\/span><i><span style=\"font-weight: 400;\">Environmental Product Declaration<\/span><\/i><span style=\"font-weight: 400;\">) saat proyek menargetkan standar bangunan hijau atau pengadaan material yang lebih rendah emisi.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Solusinya, perusahaan dapat menggunakan <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/sistem-konstruksi\/\"><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> konstruksi yang terintegrasi <\/span><\/a><span style=\"font-weight: 400;\">modul akuntansi serta sumber daya perusahaan sehingga segala jenis data material yang dibutuhkan dapat ter<\/span><i><span style=\"font-weight: 400;\">update<\/span><\/i><span style=\"font-weight: 400;\"> secara otomatis untuk mempermudah pembuatan <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p><i><span style=\"font-weight: 400;\"><span id=\"quantity\">Quantity takeoff<\/span><\/span><\/i><span style=\"font-weight: 400;\"> tetap menjadi dasar penting dalam manajemen biaya konstruksi. Semakin akurat tim estimasi menghitung volume pekerjaan, material, tenaga kerja, dan alat, semakin besar peluang proyek berjalan sesuai anggaran.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tantangan dalam membangun berbagai jenis bangunan juga mirip, seperti revisi desain yang cepat, tenggat yang ketat, dan data proyek yang terus bergerak. Karena itu, estimator perlu memakai alur kerja yang terstruktur, memeriksa versi dokumen dengan disiplin, dan menghindari kesalahan dasar seperti skala yang keliru atau <\/span><i><span style=\"font-weight: 400;\">waste factor<\/span><\/i><span style=\"font-weight: 400;\"> yang tidak dihitung.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Di masa depan, peran estimator akan menjadi lebih strategis karena dibantu oleh otomatisasi seperti platform <\/span><i><span style=\"font-weight: 400;\">cloud<\/span><\/i><span style=\"font-weight: 400;\">, <\/span><i><span style=\"font-weight: 400;\">Building Information Modelling<\/span><\/i><span style=\"font-weight: 400;\"> 5D, dan alat bantu AI untuk menghubungkan kuantitas, biaya, jadwal, dan data proyek dalam satu alur kerja, sehingga pekerjaan repetitif bisa berkurang dan tim dapat lebih fokus pada analisis nilai, mitigasi risiko, serta strategi pengadaan.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pada akhirnya, <\/span><i><span style=\"font-weight: 400;\">quantity takeoff<\/span><\/i><span style=\"font-weight: 400;\"> bukan hanya soal menghitung lebih cepat, tetapi juga berguna dalam menetapkan kontrol kepastian dan kepercayaan sejak awal proyek.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dalam proyek konstruksi, quantity takeoff menjadi langkah penting yang membantu tim menghitung kebutuhan material, tenaga kerja, dan peralatan sejak awal. Proses ini menjadi semakin kompleks karena banyaknya revisi gambar, perubahan spesifikasi, dan tuntutan efisiensi menuntut estimasi proyek yang cepat dan sesuai. Karena itu, banyak tim prakonstruksi kini memakai Building Information Modelling (BIM) atau sistem takeoff [&hellip;]<\/p>\n","protected":false},"author":222,"featured_media":191331,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-191306","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Pelajari bagaimana quantity takeoff membantu mengendalikan anggaran, mengurangi waste proyek, dan menjaga profit margin proyek konstruksi.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda\" \/>\n<meta property=\"og:description\" content=\"Pelajari bagaimana quantity takeoff membantu mengendalikan anggaran, mengurangi waste proyek, dan menjaga profit margin proyek konstruksi.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-25T09:16:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-21T01:20:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/quantity-takeoff-hashmicro.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Kinan Eliana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kinan Eliana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/\"},\"author\":{\"name\":\"Kinan Eliana\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/53c7ddb69fea5f813a7687ddf4196411\"},\"headline\":\"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda\",\"datePublished\":\"2026-03-25T09:16:56+00:00\",\"dateModified\":\"2026-04-21T01:20:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/\"},\"wordCount\":1939,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/quantity-takeoff-hashmicro.webp\",\"articleSection\":[\"Construction Suite\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/\",\"name\":\"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/quantity-takeoff-hashmicro.webp\",\"datePublished\":\"2026-03-25T09:16:56+00:00\",\"dateModified\":\"2026-04-21T01:20:17+00:00\",\"description\":\"Pelajari bagaimana quantity takeoff membantu mengendalikan anggaran, mengurangi waste proyek, dan menjaga profit margin proyek konstruksi.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/quantity-takeoff-hashmicro.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/quantity-takeoff-hashmicro.webp\",\"width\":1920,\"height\":1080,\"caption\":\"Quantity takeoff\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/quantity-takeoff\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hashmicro\",\"https:\\\/\\\/x.com\\\/hashmicro\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/53c7ddb69fea5f813a7687ddf4196411\",\"name\":\"Kinan Eliana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/kinan-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/kinan-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/kinan-96x96.webp\",\"caption\":\"Kinan Eliana\"},\"description\":\"Kinan telah berpengalaman selama 3 tahun di bidang content writing untuk industri manufaktur, konstruksi, dan retail. Ia secara konsisten mengulas topik terkait proses operasional bisnis manufaktur, manajemen omnichannel, manajemen proyek, serta implementasi teknologi digital untuk proses bisnis.\",\"sameAs\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"industri\",\"manajemen bisnis\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Content Writer\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/kinan-eliana\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda &#187; HashMicro Indonesia","description":"Pelajari bagaimana quantity takeoff membantu mengendalikan anggaran, mengurangi waste proyek, dan menjaga profit margin proyek konstruksi.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/","og_locale":"id_ID","og_type":"article","og_title":"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda","og_description":"Pelajari bagaimana quantity takeoff membantu mengendalikan anggaran, mengurangi waste proyek, dan menjaga profit margin proyek konstruksi.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-03-25T09:16:56+00:00","article_modified_time":"2026-04-21T01:20:17+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/quantity-takeoff-hashmicro.webp","type":"image\/webp"}],"author":"Kinan Eliana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Kinan Eliana","Estimasi waktu membaca":"11 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/"},"author":{"name":"Kinan Eliana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/53c7ddb69fea5f813a7687ddf4196411"},"headline":"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda","datePublished":"2026-03-25T09:16:56+00:00","dateModified":"2026-04-21T01:20:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/"},"wordCount":1939,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/quantity-takeoff-hashmicro.webp","articleSection":["Construction Suite"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/","name":"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/quantity-takeoff-hashmicro.webp","datePublished":"2026-03-25T09:16:56+00:00","dateModified":"2026-04-21T01:20:17+00:00","description":"Pelajari bagaimana quantity takeoff membantu mengendalikan anggaran, mengurangi waste proyek, dan menjaga profit margin proyek konstruksi.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/quantity-takeoff-hashmicro.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/quantity-takeoff-hashmicro.webp","width":1920,"height":1080,"caption":"Quantity takeoff"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/quantity-takeoff\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Quantity Takeoff: Manfaatnya Bagi Kelancaran dan Profit Margin Proyek Anda"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/53c7ddb69fea5f813a7687ddf4196411","name":"Kinan Eliana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/kinan-96x96.webp","caption":"Kinan Eliana"},"description":"Kinan telah berpengalaman selama 3 tahun di bidang content writing untuk industri manufaktur, konstruksi, dan retail. Ia secara konsisten mengulas topik terkait proses operasional bisnis manufaktur, manajemen omnichannel, manajemen proyek, serta implementasi teknologi digital untuk proses bisnis.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["industri","manajemen bisnis"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/kinan-eliana\/"}]}},"focus_keyword":"quantity takeoff","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/191306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/222"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=191306"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/191306\/revisions"}],"predecessor-version":[{"id":192591,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/191306\/revisions\/192591"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/191331"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=191306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=191306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=191306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}