<!doctype html>
<html class="no-js" lang="id">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="author" content="Ruangguru Tech Team" />
<meta
name="description"
content="Paket lengkap + hemat Ruangbelajar + Roboguru Plus Premium khusus untuk SMP dengan diskon 60%. Harga mulai Rp 100 Ribuan/bulan! Dapatkan harga terbaik sekarang!"
/>
<meta name="generator" content="HubSpot" />
<title>Langganan Ruangbelajar + Roboguru Plus SMP, Mulai Rp 100 Ribuan</title>
<link rel="shortcut icon" href="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/favicon60x60-3.png" />
<meta
property="og:description"
content="Paket lengkap + hemat Ruangbelajar + Roboguru Plus Premium khusus untuk SMP dengan diskon 60%. Harga mulai Rp 100 Ribuan/bulan! Dapatkan harga terbaik sekarang!"
/>
<meta property="og:title" content="Langganan Ruangbelajar + Roboguru Plus SMP, Mulai Rp 100 Ribuan" />
<meta
name="twitter:description"
content="Paket lengkap + hemat Ruangbelajar + Roboguru Plus Premium khusus untuk SMP dengan diskon 60%. Harga mulai Rp 100 Ribuan/bulan! Dapatkan harga terbaik sekarang!"
/>
<meta name="twitter:title" content="Langganan Ruangbelajar + Roboguru Plus SMP, Mulai Rp 100 Ribuan" />
<style>
a.cta_button {
-moz-box-sizing: content-box !important;
-webkit-box-sizing: content-box !important;
box-sizing: content-box !important;
vertical-align: middle;
}
.hs-breadcrumb-menu {
list-style-type: none;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
.hs-breadcrumb-menu-item {
float: left;
padding: 10px 0px 10px 10px;
}
.hs-breadcrumb-menu-divider:before {
content: '›';
padding-left: 10px;
}
.hs-featured-image-link {
border: 0;
}
.hs-featured-image {
float: right;
margin: 0 0 20px 20px;
max-width: 50%;
}
@media (max-width: 568px) {
.hs-featured-image {
float: none;
margin: 0;
width: 100%;
max-width: 100%;
}
}
.hs-screen-reader-text {
clip: rect(1px, 1px, 1px, 1px);
height: 1px;
overflow: hidden;
position: absolute !important;
width: 1px;
}
</style>
<link
rel="stylesheet"
href="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/module_assets/87562389674/1670556296985/module_87562389674_Module_RG_Detail_Page_ruangbelajar.min.css"
/>
<!-- Added by GoogleAnalytics integration -->
<script>
var _hsp = (window._hsp = window._hsp || []);
_hsp.push([
'addPrivacyConsentListener',
function (consent) {
if (consent.allowed || (consent.categories && consent.categories.analytics)) {
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
(i[r] =
i[r] ||
function () {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
ga('create', 'UA-49650255-1', 'auto');
ga('send', 'pageview');
}
},
]);
</script>
<!-- /Added by GoogleAnalytics integration -->
<link rel="canonical" href="https://www.ruangguru.com/ruangbelajar-roboguruplus-smp" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script>
(function (h, e, a, t, m, p) {
m = e.createElement(a);
m.async = !0;
m.src = t;
p = e.getElementsByTagName(a)[0];
p.parentNode.insertBefore(m, p);
})(window, document, 'script', 'https://u.heatmap.it/log.js');
</script>
<meta name="google-site-verification" content="VJAn1g6wmtTZPpTXh-B4xoSFEkUi5jcV74xQSr6jnOM" />
<script>
document.querySelector('meta[name="author"]').setAttribute('content', 'Ruangguru Tech Team');
</script>
<meta name="publisher" content="PT Ruang Raya Indonesia" />
<!-- Global site tag (gtag.js) - Google Analytics -->
<!--
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-49650255-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-49650255-1');
</script>
-->
<!-- Google Tag Manager -->
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' });
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-PVNLZFT');
</script>
<!-- End Google Tag Manager -->
<meta property="og:image" content="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/ruangguru-1.jpeg#keepProtocol" />
<meta property="og:image:width" content="400" />
<meta property="og:image:height" content="300" />
<meta name="twitter:image" content="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/ruangguru-1.jpeg#keepProtocol" />
<meta property="og:url" content="https://www.ruangguru.com/ruangbelajar-roboguruplus-smp" />
<meta name="twitter:card" content="summary_large_image" />
<meta http-equiv="content-language" content="id" />
<link rel="stylesheet" href="https://cdn-web-2.ruangguru.com/landing-page-web/public/assets/common/layout.min.css" />
<link
rel="stylesheet"
href="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/template_assets/44980440489/1661483386153/A_Ruangguru_Projects/Project_Hofar/CSS_Javascript_Auto_Generate_Breadcrumb_-_V1.min.css"
/>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.css" />
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&Nunito:ital,wght@0,700;0,800;1,700;1,800&family=Source+Sans+Pro:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&display=swap');
.container,
.container-lg,
.container-md,
.container-sm,
.container-xl,
.page-center {
float: none !important;
width: 90% !important;
max-width: 1200px !important;
margin: 0 auto !important;
}
body,
html {
height: 100% !important;
margin: 0;
min-height: 100% !important;
scroll-behavior: smooth;
}
img {
max-width: 100%;
}
button,
a {
cursor: pointer !important;
}
.fn-ma {
float: none;
margin: auto;
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
a {
margin: 0 !important;
}
a {
text-decoration: none;
}
/* Used on all text */
.font-inter {
font-family: 'Inter';
}
.font-source {
font-family: 'Source Sans Pro', sans-serif;
}
.font-nunito {
font-family: 'Nunito', sans-serif;
}
/* Used on H1 tag */
.font-header-one,
.font-header-two,
.font-header-three {
font-weight: 700;
}
/* Black main color */
.font-black {
color: #2c313a;
}
/* Black secondary color */
.font-black-secondary {
color: #333333;
}
.font-green {
color: #13939e;
}
.font-gray {
color: #424242;
}
.font-light-gray {
color: #5f6570;
}
/* White color */
.font-white {
color: #ffffff;
}
.font-red {
color: #e52a34;
}
.font-blue {
background: linear-gradient(299.69deg, #0a5ad1 7.23%, #3db6fa 105.51%), #ffffff;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-fill-color: transparent;
}
/* Letter spacing */
.ls-1 {
letter-spacing: -0.01em;
}
.ls-5 {
letter-spacing: -0.005em;
}
/* Display */
.display-block {
display: block;
}
.display-none {
display: none;
}
.display-flex {
display: flex;
}
.display-grid {
display: grid;
}
/* Slick Button */
/* .slick-button-orange .slick-arrow {}
.slick-button-orange .slick-next {}
.slick-button-orange .slick-prev {} */
.slick-arrow {
}
.slick-next {
}
.slick-button-orange {
}
.slick-button-white {
}
/* Slick Dots */
/* .slick-dots-white .slick-dots li button:before {}
.slick-dots-white .slick-dots li.slick-active button:before {} */
/* Button */
/* Used on all button */
.button-basic-white {
background: #ffffff;
border-radius: 96px;
text-decoration: none;
}
.button-basic-white:hover {
filter: brightness(95%);
}
.button-basic-orange {
background: #f26d0f;
border-radius: 100px;
text-decoration: none;
}
.button-basic-orange:hover {
filter: brightness(95%);
}
/* List */
.ul-basic {
list-style: none;
}
.ol-basic {
list-style: none;
}
@media (min-width: 1025px) {
.font-header-one {
font-size: 32px;
line-height: 48px;
}
.font-header-two {
font-size: 18px;
line-height: 28px;
}
.font-header-three {
font-size: 20px;
line-height: 30px;
}
.desktop {
display: block !important;
}
.mobile {
display: none !important;
}
}
@media (max-width: 1024px) {
.font-header-one {
font-size: 20px;
line-height: 22px;
}
.font-header-two,
.font-header-three {
font-size: 16px;
line-height: 24px;
}
.desktop {
display: none !important;
}
.mobile {
display: block !important;
}
}
</style>
<script type="module" crossorigin src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/ruangbelajar-roboguruplus-smp/assets/index-Dqv5PPZA.js"></script>
</head>
<body class="hs-content-id-89379022990 hs-landing-page hs-page" style="">
<div class="header-container-wrapper">
<div class="header-container container-fluid"></div>
<!--end header -->
</div>
<!--end header wrapper -->
<div class="body-container-wrapper">
<div class="body-container container-fluid">
<div class="row-fluid-wrapper row-depth-1 row-number-1">
<div class="row-fluid">
<div class="span12 widget-span widget-type-custom_widget" style="" data-widget-type="custom_widget" data-x="0" data-w="12">
<div
id="hs_cos_wrapper_module_166539239949538"
class="hs_cos_wrapper hs_cos_wrapper_widget hs_cos_wrapper_type_module"
style=""
data-hs-cos-general-type="widget"
data-hs-cos-type="module"
>
<section class="hero">
<div class="page-center">
<div class="hero-content fn-ma">
<div class="hero-content_top">
<a href="https://www.ruangguru.com" id="backToReferrer" role="button" style="cursor: pointer">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/Iconback.svg"
width="32"
height="32"
class="ic-back"
alt="Icon Back"
/>
</a>
<nav aria-label="breadcrumb">
<ol id="breadcrumb" class="breadcrumb bg-transparent p-0"></ol>
</nav>
</div>
<div class="hero-content_bottom display-grid">
<div class="hero-content_bottom--left">
<p class="font-inter font-white font-notes-hero desktop">ruangbelajar</p>
<h1 class="font-inter font-white font-header-one" id="product-hero-title">Video belajar</h1>
<p class="font-inter font-desc-hero" id="product-hero-description">Video belajar adaptif yang menyesuaikan kecepatan belajarmu!</p>
</div>
<div class="hero-content_bottom--right">
<div class="hero-video fn-ma">
<a href="#" class="js-video-button" data-channel="video" data-video-url="https://www.youtube.com/embed/7lCmzw25yRI?autoplay=1" rel=" noopener">
<div class="video-box">
<picture>
<source
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/rubel-hero-non-sd.png?convert=webp "
type="image/webp"
id="heroWebp"
/>
<source
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/rubel-hero-non-sd.png "
type="image/png"
id="heroSrcPng"
/>
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/rubel-hero-non-sd.png"
class="img-hero"
alt="Video Ruangbelajar"
loading="lazy"
id="heroPng"
/>
</picture>
</div>
</a>
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-star.svg"
class="ic-hero"
id="ic-star-top"
loading="lazy"
alt=""
/>
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-star.svg"
class="ic-hero"
id="ic-star-bottom"
loading="lazy"
alt=""
/>
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-playlist.png"
class="ic-hero"
id="ic-playlist"
loading="lazy"
alt=""
/>
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-brain.png"
class="ic-hero"
id="ic-live"
loading="lazy"
alt=""
/>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="detail">
<div class="detail-wrapper">
<div class="detail-content fn-ma">
<div class="detail-content_left">
<div class="detail-navbar-usp-wrapper">
<div class="detail-navbar">
<div class="detail-navbar_tier navbar-select" id="navbar-tier">
<p class="font-inter font-black" id="selectedGrade">Kelas 3 SD</p>
<button class="font-inter" id="btn-select-grade">
Ganti
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-ChevronRight%20(1).svg"
width="16"
height="16"
loading="lazy"
alt=""
/>
</button>
</div>
<div class="detail-navbar_info">
<a class="btn-navbar active" href="#detail-package">Detail Paket</a>
<a class="btn-navbar" href="#video-simulation">Contoh Video</a>
<a class="btn-navbar" href="#reviews">Ulasan</a>
</div>
</div>
<div class="detail-usp" id="detail-package">
<h2 class="font-inter font-black-secondary font-header-two ls-5">Yang akan kamu dapatkan:</h2>
<ul id="usp-list"></ul>
<button class="btn-read mobile">
<span id="toggle-usp-text">Selengkapnya</span>
<img
class="toggle-usp-arrow down"
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-ChevronDown.svg"
width="16"
height="16"
loading="lazy"
alt=""
/>
</button>
</div>
</div>
<div class="detail-video" id="video-simulation">
<h2 class="font-inter font-black-secondary font-header-three ls-5">Contoh video ruangbelajar</h2>
<p class="font-inter font-black font-desc-video" id="choose-grade-lesson">Pilih Mata Pelajaran</p>
<div class="detail-video_tier navbar-select sd">
<p class="font-inter font-black" id="selectedLesson">Matematika</p>
<button class="font-inter" id="change-lesson-sd">
Ganti
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-ChevronRight%20(1).svg"
width="16"
height="16"
loading="lazy"
alt=""
/>
</button>
</div>
<div class="detail-video_tier navbar-select non-sd">
<div class="navbar-select-item grade">
<p class="font-inter font-black" id="selectedGradeLesson">SD Kelas 3</p>
</div>
<div id="navbar-video-divider"></div>
<div class="navbar-select-item lesson">
<p class="font-inter font-black" id="selectedLessonNonSD">Matematika</p>
</div>
</div>
<div class="detail-video_content">
<div class="video-box" id="videoPreview">
<iframe
frameborder="0"
allowfullscreen
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
src="https://www.youtube.com/embed/JEqa8VGnQ_0"
></iframe>
</div>
</div>
<div class="detail-video_topics">
<h2 id="topic-title" class="detail-video_topics-title font-inter font-black-secondary ls-5 font-header-two">
Daftar Bab -
<span id="topic-lesson-name">Matematika</span>
<span id="topic-grade-name">Kelas 1 SD</span>
</h2>
<ul id="topic-list" class="topic-list"></ul>
</div>
</div>
<div class="detail-fitur">
<div class="detail-fitur_info">
<div class="detail-fitur_text">
<h2 class="font-inter font-white ls-5 font-header-two font-title-fitur">Dapatkan semua contoh fitur ruangbelajar!</h2>
<p class="font-inter font-white font-desc-fitur">Kamu bisa lihat contoh video adaptif, latihan soal, rangkuman, dan banyak lagi.</p>
</div>
<a class="font-inter font-black btn-white" href="https://ruangguru.com/ruangbelajar">Lihat Contoh Fitur</a>
</div>
</div>
<div class="detail-testimoni" id="reviews">
<h2 class="font-inter font-black-secondary ls-5 font-header-two">Cerita para pengguna ruangbelajar</h2>
<div class="testimoni-wrapper">
<div class="testimoni-card sd">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=56&height=56&name=Fadhiilah%20MA.jpg"
width="56"
height="56"
loading="lazy"
alt="Fadhiilah M"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=28&height=28&name=Fadhiilah%20MA.jpg 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=56&height=56&name=Fadhiilah%20MA.jpg 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=84&height=84&name=Fadhiilah%20MA.jpg 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=112&height=112&name=Fadhiilah%20MA.jpg 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=140&height=140&name=Fadhiilah%20MA.jpg 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Fadhiilah%20MA.jpg?width=168&height=168&name=Fadhiilah%20MA.jpg 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Fadhiilah M</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Sekarang aku lebih gampang memahami pelajaran, lho. Ini berkat video Dafa & Lulu, soalnya ada animasinya jadi berasa nonton film kartun sambil belajar.
</p>
</div>
<div class="testimoni-card sd">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=56&height=56&name=sunflower.png"
width="56"
height="56"
loading="lazy"
alt="Asih A"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=28&height=28&name=sunflower.png 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=56&height=56&name=sunflower.png 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=84&height=84&name=sunflower.png 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=112&height=112&name=sunflower.png 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=140&height=140&name=sunflower.png 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=168&height=168&name=sunflower.png 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Asih A</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Kalau ada materi yang enggak aku ngerti di sekolah, biasanya aku lanjut belajar di rumah pakai video Dafa & Lulu. Bener-bener ngebantu banget karena penjelasannya
mudah dipahami.
</p>
</div>
<div class="testimoni-card smp">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=56&height=56&name=sunflower.png"
width="56"
height="56"
loading="lazy"
alt="Asrul C"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=28&height=28&name=sunflower.png 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=56&height=56&name=sunflower.png 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=84&height=84&name=sunflower.png 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=112&height=112&name=sunflower.png 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=140&height=140&name=sunflower.png 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=168&height=168&name=sunflower.png 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Asrul C</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Aku ngerasa semua pelajaran jadi mudah dicerna sejak pakai Adapto. Udah kayak kelas offline gitu, ada gurunya yang memastikan aku udah paham atau belum. Keren banget!
</p>
</div>
<div class="testimoni-card smp">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=56&height=56&name=Dasmasura%20Y.jpg"
width="56"
height="56"
loading="lazy"
alt="Dasmasura Y"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=28&height=28&name=Dasmasura%20Y.jpg 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=56&height=56&name=Dasmasura%20Y.jpg 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=84&height=84&name=Dasmasura%20Y.jpg 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=112&height=112&name=Dasmasura%20Y.jpg 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=140&height=140&name=Dasmasura%20Y.jpg 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/Dasmasura%20Y.jpg?width=168&height=168&name=Dasmasura%20Y.jpg 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Dasmasura Y</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Dulu, aku belajar dari buku pelajaran aja. Penjelasannya kurang rinci jadi susah memahaminya. Aku pun coba langganan Ruangguru dan ternyata helpful banget! Belajarku
lebih lebih lengkap dan teratur sesuai kebutuhan sekolah.
</p>
</div>
<div class="testimoni-card sma">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=56&height=56&name=I%20GEDE%20PA.jpg"
width="56"
height="56"
loading="lazy"
alt="I Gede P"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=28&height=28&name=I%20GEDE%20PA.jpg 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=56&height=56&name=I%20GEDE%20PA.jpg 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=84&height=84&name=I%20GEDE%20PA.jpg 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=112&height=112&name=I%20GEDE%20PA.jpg 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=140&height=140&name=I%20GEDE%20PA.jpg 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/I%20GEDE%20PA.jpg?width=168&height=168&name=I%20GEDE%20PA.jpg 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">I Gede P</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Aku tipikal yang gampang bosan pas belajar apalagi kalau buku pelajajarannya kurang menarik. Tapi, aku lebih semangat setelah pakai Ruangguru. Soalnya banyak event seru
dan gurunya asik!
</p>
</div>
<div class="testimoni-card sma">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=56&height=56&name=sunflower.png"
width="56"
height="56"
loading="lazy"
alt="Syifa S"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=28&height=28&name=sunflower.png 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=56&height=56&name=sunflower.png 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=84&height=84&name=sunflower.png 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=112&height=112&name=sunflower.png 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=140&height=140&name=sunflower.png 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Student/sunflower.png?width=168&height=168&name=sunflower.png 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Syifa S</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Aku sering ngantuk kalau cuma dengerin penjelasan materi, tapi video belajar Ruangguru beda banget. Ada kuis soal yang perlu dijawab di akhir video. Aku jadi lebih
memperhatikan dan memperdalam materi.
</p>
</div>
<div class="testimoni-card utbk">
<div class="testimoni-card_top">
<img src="https://roboguru-forum-cdn.ruangguru.com/image/1657cfb0-af2a-4acb-9584-62dc63267192.png" width="56" height="56" loading="lazy" alt="Mohammad A" />
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Mohammad A</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Mahasiswa UGM - Alumni Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Aku semangat belajar karena penjelasan Master Teacher mudah dipahami dan ada fitur rangkuman dengan tampilan menarik. Belajar jadi gak bingung hingga aku bisa masuk PTN
impianku, makasih Ruangguru!
</p>
</div>
<div class="testimoni-card utbk">
<div class="testimoni-card_top">
<img
src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=56&height=56&name=Jonathan.png"
width="56"
height="56"
loading="lazy"
alt="Jonathan T"
srcset="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=28&height=28&name=Jonathan.png 28w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=56&height=56&name=Jonathan.png 56w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=84&height=84&name=Jonathan.png 84w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=112&height=112&name=Jonathan.png 112w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=140&height=140&name=Jonathan.png 140w, https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/LP%20Testimonial/Sept%202021/ruangbelajar/Jonathan.png?width=168&height=168&name=Jonathan.png 168w"
sizes="(max-width: 56px) 100vw, 56px"
/>
<div class="testimoni-card_top-text">
<p class="font-inter font-black ls-5 font-nama">Jonathan T</p>
<p class="font-inter font-light-gray font-sekolah ls-5">Mahasiswa UNPAD - Alumni Pengguna ruangbelajar</p>
</div>
</div>
<p class="font-inter font-black font-testimoni ls-5">
Dulu belajar persiapan UTBK serba sulit, berbagai materi terpencar di internet. Buku latihannya pun tebal sehingga berat dibawa ke mana-mana. Akhirnya, saya coba pakai
Ruangguru. Semuanya jadi mudah dan super fleksibel! Bahan belajar sudah terangkum dan latihan soalnya terstruktur. Membantu banget proses perjuangan saya hingga bisa
diterima di UNPAD jalur SBMPTN!
</p>
</div>
</div>
</div>
</div>
<div class="detail-content_right">
<div class="page-center-content">
<h2 class="font-inter font-black ls-5 font-header-two desktop">Beli paket ruangbelajar</h2>
<div id="package-price"></div>
</div>
</div>
</div>
</div>
</section>
<div id="jenjangModal" class="modal-jenjang">
<!-- Modal content -->
<div class="modal-content-jenjang">
<div class="modal-body-jenjang">
<span class="close-jenjang">×</span>
<p class="modal-jenjang-title">Selamat datang di Ruangguru!</p>
<p class="modal-jenjang-subtitle">Ingin tahu produk untuk jenjang apa?</p>
<button type="button" class="btn-level" value="sd" on>SD</button>
<button type="button" class="btn-level" value="smp">SMP</button>
<button type="button" class="btn-level" value="sma">SMA</button>
<button type="button" class="btn-level" value="utbk">
UTBK / SNBT
<span class="new-level">Terbaru!</span>
</button>
</div>
</div>
</div>
<div id="gradeSDModal" class="modal-jenjang">
<!-- Modal content -->
<div class="modal-content-jenjang">
<div class="modal-body-jenjang">
<p class="modal-jenjang-title">Anak Anda sekarang kelas berapa?</p>
<button type="button" class="btn-sd-grade" value="1-2" on>Kelas 1 SD</button>
<button type="button" class="btn-sd-grade" value="1-2" on>Kelas 2 SD</button>
<button type="button" class="btn-sd-grade" value="3-4" on>Kelas 3 SD</button>
<button type="button" class="btn-sd-grade" value="3-4" on>Kelas 4 SD</button>
<button type="button" class="btn-sd-grade" value="5-6" on>Kelas 5 SD</button>
<button type="button" class="btn-sd-grade" value="5-6" on>Kelas 6 SD</button>
</div>
</div>
</div>
<div id="gradeNonSDModal" class="modal-jenjang">
<!-- Modal content -->
<div class="modal-content-jenjang">
<div class="modal-body-jenjang">
<span class="close-jenjang" id="gradeNonSDCloseModal">×</span>
<p class="modal-jenjang-title">Pilih Kelas</p>
<button type="button" class="btn-smp-sma-grade smp" value="smp-7" name="kelas-7-smp" on>Kelas 7 SMP</button>
<button type="button" class="btn-smp-sma-grade smp" value="smp-8" name="kelas-7-smp" on>Kelas 8 SMP</button>
<button type="button" class="btn-smp-sma-grade smp" value="smp-9" name="kelas-7-smp" on>Kelas 9 SMP</button>
<button type="button" class="btn-smp-sma-grade sma" value="sma-10-ipa" on>Kelas 10 IPA SMA</button>
<button type="button" class="btn-smp-sma-grade sma" value="sma-10-ips" on>Kelas 10 IPS SMA</button>
<button type="button" class="btn-smp-sma-grade sma" value="sma-11-ipa" on>Kelas 11 IPA SMA</button>
<button type="button" class="btn-smp-sma-grade sma" value="sma-11-ips" on>Kelas 11 IPS SMA</button>
<button type="button" class="btn-smp-sma-grade sma" value="sma-12-ipa" on>Kelas 12 IPA SMA</button>
<button type="button" class="btn-smp-sma-grade sma" value="sma-12-ips" on>Kelas 12 IPS SMA</button>
<button type="button" class="btn-smp-sma-grade utbk" value="utbk" on>UTBK</button>
</div>
</div>
</div>
<div id="packageListModal" class="modal-jenjang">
<!-- Modal content -->
<div class="modal-content-jenjang">
<div class="modal-body-jenjang">
<span class="close-jenjang" id="packageListModalClose">×</span>
<p class="modal-jenjang-title">Mau langganan untuk berapa lama?</p>
<p class="modal-jenjang-subtitle">Makin lama durasinya, makin murah harga per harinya, lho!</p>
<div class="filterPackages">
<button type="button" class="btn-filter durasi-9-bulan" value="durasi-9-bulan" on>9 bulan</button>
<button type="button" class="btn-filter durasi-12-bulan" value="durasi-12-bulan" on>1 tahun</button>
<button type="button" class="btn-filter durasi-18-bulan" value="durasi-18-bulan" on>1,5 tahun</button>
<button type="button" class="btn-filter durasi-24-bulan" value="durasi-24-bulan" on>2 tahun</button>
<button type="button" class="btn-filter durasi-30-bulan" value="durasi-30-bulan" on>2,5 tahun</button>
<button type="button" class="btn-filter durasi-6-bulan" value="durasi-6-bulan" on>6 bulan</button>
<button type="button" class="btn-filter durasi-3-bulan" value="durasi-3-bulan" on>3 bulan</button>
<button type="button" class="btn-filter durasi-1-bulan" value="durasi-1-bulan" on>1 bulan</button>
<button type="button" class="btn-filter other" value="other" on>Lainnya</button>
</div>
<p class="modal-jenjang-title" style="margin-top: 8px !important; margin-bottom: 8px !important">Pilih paket yang tersedia</p>
<div id="availablePackages"></div>
<div class="package-upgrades">
<p class="modal-jenjang-title">Lengkapi paket belajarmu, yuk!</p>
<div id="packageUpgradesWrapper"></div>
</div>
<div class="package-total" id="packageTotalWrapper"></div>
</div>
</div>
</div>
<div id="chooseSubjectModal" class="modal-jenjang">
<!-- Modal content -->
<div class="modal-content-jenjang">
<div class="modal-body-jenjang">
<span class="close-jenjang" id="chooseSubjectCloseModal">×</span>
<p class="modal-jenjang-title">Pilih Mata Pelajaran</p>
<div id="chooseSubjectWrapper"></div>
</div>
</div>
</div>
</div>
</div>
<!--end widget-span -->
</div>
<!--end row-->
</div>
<!--end row-wrapper -->
</div>
<!--end body -->
</div>
<!--end body wrapper -->
<!-- HubSpot performance collection script -->
<script defer src="https://static.hsappstatic.net/content-cwv-embed/static-1.240/embed.js"></script>
<script src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/template_assets/47442333552/1667882001713/A_Ruangguru_Projects/Project_Hofar/Javascript_Auto_Generate_Breadcrumb_-_V1_3.min.js"></script>
<script src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/template_assets/89254424350/1666672114193/toast.min.js"></script>
<!-- <script src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/module_assets/87562389674/1670556295832/module_87562389674_Module_RG_Detail_Page_ruangbelajar.min.js"></script> -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
const videoPreviewData = [
{
gradeSerial: 'sd-1',
gradeName: 'Kelas 1 SD',
lessons: [
{ name: 'Matematika', youtubeUrl: 'https://youtube.com/embed/fjmFP7Mpop8', lessonSerial: 'sd-1-matematika', topics: [{ name: 'Kegiatanku', subtopics: ['Kegiatan Malam Hari'] }] },
{
name: 'Bahasa Indonesia',
youtubeUrl: 'https://youtube.com/embed/MgUNTyiHuxY',
lessonSerial: 'sd-1-bahasaindonesia',
topics: [{ name: 'Peristiwa Alam', subtopics: ['Peristiwa Siang dan Malam'] }],
},
],
},
{
gradeSerial: 'sd-2',
gradeName: 'Kelas 2 SD',
lessons: [
{
name: 'Matematika',
youtubeUrl: 'https://youtube.com/embed/Kr6hpV5e5OY',
lessonSerial: 'sd-2-matematika',
topics: [{ name: 'Bermain di Lingkunganku', subtopics: ['Bermain di Rumah Teman'] }],
},
{
name: 'Bahasa Indonesia',
youtubeUrl: 'https://youtube.com/embed/mnORGTAmhpE',
lessonSerial: 'sd-2-bahasaindonesia',
topics: [{ name: 'Tugasku Sehari-hari', subtopics: ['Tugasku Sebagai Umat Beragama'] }],
},
],
},
{
gradeSerial: 'sd-3',
gradeName: 'Kelas 3 SD',
lessons: [
{
name: 'Matematika',
youtubeUrl: 'https://youtube.com/embed/svOu-cxbxOY',
lessonSerial: 'sd-3-matematika',
topics: [{ name: 'Perkembangan Teknologi', subtopics: ['Perkembangan Teknologi Produksi Sandang'] }],
},
{
name: 'Bahasa Indonesia',
youtubeUrl: 'https://youtube.com/embed/3N61bsBrb24',
lessonSerial: 'sd-3-bahasaindonesia',
topics: [{ name: 'Perubahan di Alam', subtopics: ['Perubahan Cuaca dan Iklim'] }],
},
],
},
{
gradeSerial: 'sd-4',
gradeName: 'Kelas 4 SD',
lessons: [
{
name: 'IPA',
youtubeUrl: 'https://youtube.com/embed/JEqa8VGnQ_0',
lessonSerial: 'sd-4-ipa',
topics: [{ name: 'Indahnya Keragaman Di Negeriku', subtopics: ['Indahnya Keragaman Budaya Negeriku'] }],
},
{ name: 'IPS', youtubeUrl: 'https://youtube.com/embed/BltJgckmivQ', lessonSerial: 'sd-4-ips', topics: [{ name: 'Indahnya Kebersamaan', subtopics: ['Keberagaman Budaya Bangsaku'] }] },
{
name: 'Matematika',
youtubeUrl: 'https://youtube.com/embed/PNe9wj8yVBs',
lessonSerial: 'sd-4-matematika',
topics: [{ name: 'Data dan Pengukuran', subtopics: ['Penyajian Data: Diagram Batang'] }],
},
],
},
{
gradeSerial: 'sd-5',
gradeName: 'Kelas 5 SD',
lessons: [
{ name: 'IPA', youtubeUrl: 'https://youtube.com/embed/plIhynuJr_U', lessonSerial: 'sd-5-ipa', topics: [{ name: 'Makanan Sehat', subtopics: ['Bagaimana Tubuh Mengolah Makanan?'] }] },
{ name: 'IPS', youtubeUrl: 'https://youtube.com/embed/aa9X-NvB0YM', lessonSerial: 'sd-5-ips', topics: [{ name: 'Organ Gerak Hewan dan Manusia', subtopics: ['Manusia dan Lingkungan'] }] },
{
name: 'Bahasa Indonesia',
youtubeUrl: 'https://youtube.com/embed/ovKdxfQZPZA',
lessonSerial: 'sd-5-bahasaindonesia',
topics: [{ name: 'Makanan Sehat', subtopics: ['Pentingnya Makanan Sehat Bagi Tubuh'] }],
},
],
},
{
gradeSerial: 'sd-6',
gradeName: 'Kelas 6 SD',
lessons: [
{ name: 'IPA', youtubeUrl: 'https://youtube.com/embed/N0Or_9LqcEE', lessonSerial: 'sd-6-ipa', topics: [{ name: 'Bumiku', subtopics: ['Bumi, Matahari, dan Bulan'] }] },
{
name: 'IPS',
youtubeUrl: 'https://youtube.com/embed/s5rEZO8meio',
lessonSerial: 'sd-6-ips',
topics: [{ name: 'Menuju Masyarakat Sejahtera', subtopics: ['Masyarakat Peduli Lingkungan'] }],
},
{ name: 'Matematika', youtubeUrl: 'https://youtube.com/embed/NIuboCrlbwk', lessonSerial: 'sd-6-matematika', topics: [{ name: 'Lingkaran', subtopics: ['Keliling Lingkaran'] }] },
],
},
{
gradeSerial: 'smp-7',
gradeName: 'Kelas 7 SMP',
lessons: [
{ name: 'Biologi', youtubeUrl: 'https://youtube.com/embed/E91uGdhqBr4', lessonSerial: 'smp-7-biologi', topics: [{ name: 'Klasifikasi Makhluk Hidup', subtopics: ['Konsep Kilat'] }] },
],
},
{
gradeSerial: 'smp-8',
gradeName: 'Kelas 8 SMP',
lessons: [{ name: 'Bahasa Indonesia', youtubeUrl: 'https://youtube.com/embed/PYZnWHLytlE', lessonSerial: 'smp-8-bahasaindonesia', topics: [{ name: 'Iklan', subtopics: ['Konsep Kilat'] }] }],
},
{
gradeSerial: 'smp-9',
gradeName: 'Kelas 9 SMP',
lessons: [
{
name: 'Matematika',
youtubeUrl: 'https://youtube.com/embed/AxVLh6rNzKc',
lessonSerial: 'smp-9-matematika',
topics: [{ name: 'Bilangan Berpangkat (Eksponen)', subtopics: ['Konsep Kilat'] }],
},
],
},
{
gradeSerial: 'sma-10-ipa',
gradeName: 'Kelas 10 IPA',
lessons: [
{ name: 'Fisika', youtubeUrl: 'https://youtube.com/embed/oJ0U0q-Nmr8', lessonSerial: 'sma-10-ipa-fisika', topics: [{ name: 'Besaran dan Satuan', subtopics: ['Konsep Kilat'] }] },
{ name: 'Biologi', youtubeUrl: 'https://youtube.com/embed/AIG7SER9ngU', lessonSerial: 'sma-10-ipa-biologi', topics: [{ name: 'Ruang Lingkup Biologi', subtopics: ['Konsep Kilat'] }] },
{
name: 'Kimia',
youtubeUrl: 'https://youtube.com/embed/YbC8gTl8j2U',
lessonSerial: 'sma-10-ipa-kimia',
topics: [{ name: 'Ilmu Kimia dan Ruang Lingkupnya', subtopics: ['Konsep Kilat'] }],
},
],
},
{
gradeSerial: 'sma-10-ips',
gradeName: 'Kelas 10 IPS',
lessons: [
{
name: 'Geografi',
youtubeUrl: 'https://youtube.com/embed/730SXDFdUlQ',
lessonSerial: 'sma-10-ips-geografi',
topics: [{ name: 'Pengetahuan Dasar Geografi', subtopics: ['Konsep Kilat'] }],
},
{ name: 'Ekonomi', youtubeUrl: 'https://youtube.com/embed/6X3ujv0AJck', lessonSerial: 'sma-10-ips-ekonomi', topics: [{ name: 'Sistem Ekononomi', subtopics: ['Konsep Kilat'] }] },
{
name: 'Sosiologi',
youtubeUrl: 'https://youtube.com/embed/GUI6SppuUUY',
lessonSerial: 'sma-10-ips-sosiologi',
topics: [{ name: 'Fungsi Sosiologi Untuk Mengenali Gejala Sosial di Masyarakat I', subtopics: ['Konsep Kilat'] }],
},
{ name: 'Bahasa Indonesia', youtubeUrl: 'https://youtube.com/embed/8F2zf4fPe1A', lessonSerial: 'sma-10-ips-bahasaindonesia', topics: [{ name: 'Puisi', subtopics: ['Konsep Kilat'] }] },
],
},
{
gradeSerial: 'sma-11-ipa',
gradeName: 'Kelas 11 IPA',
lessons: [
{ name: 'Fisika', youtubeUrl: 'https://youtube.com/embed/IMFDfx7tTMY', lessonSerial: 'sma-11-ipa-fisika', topics: [{ name: 'Fluida Statis', subtopics: ['Konsep Kilat'] }] },
{ name: 'Biologi', youtubeUrl: 'https://youtube.com/embed/fqxKOF3k4nw', lessonSerial: 'sma-11-ipa-biologi', topics: [{ name: 'Sel', subtopics: ['Konsep Kilat'] }] },
],
},
{
gradeSerial: 'sma-11-ips',
gradeName: 'Kelas 11 IPS',
lessons: [
{
name: 'Ekonomi',
youtubeUrl: 'https://youtube.com/embed/aC5fHkTbwU0',
lessonSerial: 'sma-11-ips-ekonomi',
topics: [{ name: 'Pertumbuhan dan Pembangunan Ekonomi', subtopics: ['Konsep Kilat'] }],
},
{
name: 'Bahasa Inggris',
youtubeUrl: 'https://youtube.com/embed/eJSL3RNpxVw',
lessonSerial: 'sma-11-ips-bahasainggris',
topics: [{ name: 'Sharing Advice', subtopics: ['Konsep Kilat'] }],
},
],
},
{
gradeSerial: 'sma-12-ipa',
gradeName: 'Kelas 12 IPA',
lessons: [
{
name: 'Biologi',
youtubeUrl: 'https://youtube.com/embed/oeUZW75cBSY',
lessonSerial: 'sma-12-ipa-biologi',
topics: [{ name: 'Pertumbuhan dan Perkembangan Tumbuhan', subtopics: ['Konsep Kilat'] }],
},
{ name: 'Fisika', youtubeUrl: 'https://youtube.com/embed/AT26vrXa0Jw', lessonSerial: 'sma-12-ipa-fisika', topics: [{ name: 'Listrik Arus Searah', subtopics: ['Konsep Kilat'] }] },
{ name: 'Kimia', youtubeUrl: 'https://youtube.com/embed/LMi_TbXhaes', lessonSerial: 'sma-12-ipa-kimia', topics: [{ name: 'Sifat Koligatif Larutan', subtopics: ['Konsep Kilat'] }] },
],
},
{
gradeSerial: 'sma-12-ips',
gradeName: 'Kelas 12 IPS',
lessons: [
{
name: 'Sejarah Peminatan',
youtubeUrl: 'https://youtube.com/embed/YJJ4us4uEO8',
lessonSerial: 'sma-12-ips-sejarahpeminatan',
topics: [{ name: 'Respons Internasional terhadap Proklamasi', subtopics: ['Konsep Kilat'] }],
},
{ name: 'Sosiologi', youtubeUrl: 'https://youtube.com/embed/MvNnekt11E8', lessonSerial: 'sma-12-ips-sosiologi', topics: [{ name: 'Perubahan Sosial', subtopics: ['Konsep Kilat'] }] },
{
name: 'Geografi',
youtubeUrl: 'https://youtube.com/embed/HVD1aez9mAQ',
lessonSerial: 'sma-12-ips-geografi',
topics: [{ name: 'Konsep Wilayah dan Tata Ruang', subtopics: ['Konsep Kilat'] }],
},
],
},
{
gradeSerial: 'utbk',
gradeName: 'UTBK',
lessons: [
{
name: 'UTBK Strategi',
youtubeUrl: 'https://youtube.com/embed/Rhetkjg5Sxs',
lessonSerial: 'utbk-utbkstrategi',
topics: [{ name: 'Strategi Umum Penalaran Matematika (NEW)', subtopics: ['Strategi Belajar'] }],
},
{
name: 'UTBK Konsep Kilat',
youtubeUrl: 'https://youtube.com/embed/lSD4XDmJ24w',
lessonSerial: 'utbk-utbkkonsepkilat',
topics: [{ name: 'Reading Comprehension for UTBK', subtopics: ['Konsep Kilat Specific Information'] }],
},
],
},
];
function updateProductHeroText({ title: title, description: description }) {
$('#product-hero-title').text(title), $('#product-hero-description').text(description);
}
if (
($(window).one('scroll', function () {
$('#package-price').css('display', 'block');
}),
setTimeout(function () {
$('#package-price').css('display', 'block');
}, 3e3),
$('.btn-read.mobile').click(function () {
$('.detail-usp > ul > li:nth-child(n+7)').toggle(400, function () {
$(this).is(':visible')
? ($('#toggle-usp-text').text('Lihat lebih sedikit'), $('.toggle-usp-arrow').removeClass('down'), $('.toggle-usp-arrow').addClass('up'))
: ($('#toggle-usp-text').text('Selengkapnya'), $('.toggle-usp-arrow').removeClass('up'), $('.toggle-usp-arrow').addClass('down'));
});
}),
$('#btn-select-grade').click(function () {
$('#gradeSDModal').css('display', 'block');
}),
window.location.pathname.includes('sd'))
) {
const srcRubelSDHero = 'https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/rubel-hero-sd.png';
$('#heroWebp').attr('srcset', srcRubelSDHero + '?convert=webp'),
$('#heroSrcPng').attr('srcset', srcRubelSDHero),
$('#heroPng').attr('src', srcRubelSDHero),
$('#gradeSDModal').css('display', 'block'),
$('#navbar-tier').addClass('show'),
$('.testimoni-card.sd').css('display', 'block'),
$('.detail-video_tier.non-sd').css('display', 'none'),
$('.detail-video_tier.sd').css('display', 'flex'),
updateProductHeroText({ title: 'Video belajar bersama guru', description: 'Video belajar SD dengan pembahasan lengkap dan mudah dipahami' });
}
function changeGrade(grade, gradeId) {
switch (grade) {
case '1-2':
endpoint = 'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel,kelas-1-2-sd';
break;
case '3-4':
endpoint = 'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel,kelas-3-4-sd&includeInstallments=true';
break;
case '5-6':
endpoint = 'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel,kelas-5-6-sd&includeInstallments=true';
break;
case 'smp':
endpoint = 'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel,kelas-smp&includeInstallments=true';
break;
case 'smp-roboguru':
endpoint =
'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel-roboguru-plus,kelas-smp&includeInstallments=true';
break;
case 'sma':
endpoint = 'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel,kelas-sma-regular&includeInstallments=true';
break;
case 'utbk':
endpoint = 'https://gw.ruangguru.com/api/v3/rg-product-package-api/active-packages?page=1&pageSize=30&excludedTags=old-flow,ios&tags=rubel-utbk,kelas-sbmptn&includeInstallments=true';
}
fetchData(endpoint, function (response) {
return response.json().then(d => {
createContent(d.data.items[0], gradeId, 1),
(function (packageList) {
const availableListEl = document.getElementById('availablePackages');
let selectedInputGroup, selectedPackage;
for (let i = 0; i < packageList.length; i++) {
let count;
const hasFlashsale = '' !== packageList[i].flashsale.flashsaleSerial,
durationTag = packageList[i].tags.find(t => t.name.includes('durasi')),
durationClassName = durationTag ? durationTag.name : 'other';
hasFlashsale
? (count = setInterval(function () {
timer(parseInt(packageList[i].flashsale.flashsaleEndTime));
}, 1e3))
: clearInterval(count),
durationTag ? $('.btn-filter.' + durationClassName).css('display', 'block') : $('.btn-filter.other').css('display', 'block'),
0 === i
? ($('.btn-filter.' + durationClassName).addClass('active-btn-level'),
(selectedInputGroup = '.inputGroup.' + durationClassName),
(selectedPackage = packageList[i]),
(availableListEl.innerHTML = ` <div class="inputGroup active ${durationClassName}"> \n <input id="package${i}" name="package" type="radio" value=${
packageList[i].serial
} checked />\n <label for="package${i}">\n <div class="radio-wrapper-text">\n <p class="font-inter" style="font-size: 14px; font-weight: 600; margin-bottom: 4px;">\n ${
packageList[i].name
}\n </p>\n <p class="font-inter" style="font-size: 11px; font-weight: 400; margin-bottom: 4px;">\n ${createDescriptionPackageByName(
packageList[i].name
)}\n </p>\n <div style="display: flex; align-items:center; column-gap:4px;">\n <p class="font-inter font-red font-diskon" style="font-size: 10px;">${
packageList[i].voucherValidation.voucherPercentage
}%</p>\n <p class="font-inter font-gray font-coret" >${createRupiahStr(packageList[i].originalPrice)}</p>\n <p class="font-inter font-red font-harga">${createRupiahStr(
packageList[i].finalPrice
)}</p>\n </div>\n </div> \n </label>\n </div>`))
: (availableListEl.innerHTML += ` <div class="inputGroup ${durationClassName}">\n <input id="package${i}" name="package" type="radio" value=${
packageList[i].serial
} />\n <label for="package${i}">\n <div class="radio-wrapper-text">\n <p class="font-inter" style="font-size: 14px; font-weight: 600; margin-bottom: 4px;">\n ${
packageList[i].name
}\n </p>\n <p class="font-inter" style="font-size: 11px; font-weight: 400; margin-bottom: 4px;">\n ${createDescriptionPackageByName(
packageList[i].name
)}\n </p>\n <div style="display: flex; align-items:center; column-gap:4px;">\n <p class="font-inter font-red font-diskon" style="font-size: 10px;">${
packageList[i].voucherValidation.voucherPercentage
}%</p>\n <p class="font-inter font-gray font-coret" >${createRupiahStr(packageList[i].originalPrice)}</p>\n <p class="font-inter font-red font-harga">${createRupiahStr(
packageList[i].finalPrice
)}</p>\n </div>\n </div> \n </label>\n </div>`),
$(selectedInputGroup).css('display', 'block');
}
$(`input[value="${selectedPackageSerial}"]`).prop('checked', !0),
$(`input[value="${selectedPackageSerial}"]`).closest('.inputGroup').addClass('active'),
createSubtotalElement(selectedPackage, gradeId),
$('.inputGroup').click(function () {
$('.inputGroup.active').removeClass('active'), $(this).addClass('active');
const selectedVal = $('input[name="package"]:checked').val();
createSubtotalElement(
packageList.find(p => p.serial === selectedVal),
gradeId
);
});
})(d.data.items);
});
});
}
function fetchData(endpoint, callback) {
return fetch(endpoint, {
headers: { 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json', 'Access-Control-Allow-Methods': 'GET, PUT, POST, DELETE, OPTIONS', platform: 'web', country: 'id' },
})
.then(response => {
callback(response);
})
.catch(error => {
console.log(error);
});
}
window.location.pathname.includes('smp') &&
!window.location.pathname.includes('roboguru') &&
(changeGrade('smp', 'kelas-9-smp'),
$('.testimoni-card.smp').css('display', 'block'),
$('.btn-smp-sma-grade.smp').css('display', 'block'),
setVideoPreviewData('smp-9'),
updateProductHeroText({ title: 'Video belajar + latihan soal', description: 'Video adaptif satu-satunya di Indonesia yang bisa menyesuaikan kecepatan belajar' })),
window.location.pathname.includes('roboguruplus-smp') &&
(changeGrade('smp-roboguru', 'kelas-9-smp'),
$('.testimoni-card.smp').css('display', 'block'),
$('.btn-smp-sma-grade.smp').css('display', 'block'),
setVideoPreviewData('smp-9'),
updateProductHeroText({
title: 'Video belajar + Konsultasi tutor',
description: 'Video adaptif satu-satunya di Indonesia dilengkapi konsultasi tutor 24 jam untuk bahas soal sampai tuntas',
})),
window.location.pathname.includes('sma') &&
(changeGrade('sma', 'kelas-11-ipa'),
$('.testimoni-card.sma').css('display', 'block'),
$('.btn-smp-sma-grade.sma').css('display', 'block'),
setVideoPreviewData('sma-11-ipa'),
updateProductHeroText({ title: 'Video belajar + UTBK skolastik', description: 'Video adaptif satu-satunya di Indonesia yang bisa menyesuaikan kecepatan belajar' })),
window.location.pathname.includes('utbk') &&
(changeGrade('utbk', 'kelas-utbk'),
$('.testimoni-card.utbk').css('display', 'block'),
$('.btn-smp-sma-grade.utbk').css('display', 'block'),
setVideoPreviewData('utbk'),
updateProductHeroText({ title: 'Video belajar + UTBK skolastik', description: 'Video adaptif satu-satunya di Indonesia yang dilengkapi persiapan hadapi UTBK skolastik terbaru' }));
let jenjangModal = document.getElementById('jenjangModal'),
jenjangClosing = (document.getElementById('jenjangBtn'), document.getElementsByClassName('close-jenjang'));
function changeQueryParamOnGradeSelected(grade) {
let newpath = window.location.origin + window.location.pathname + '?kelas=' + grade;
window.history.replaceState({ path: newpath }, '', newpath);
}
function setVideoPreviewData(kelas) {
const newVideoPreviewData = videoPreviewData.find(d => d.gradeSerial === kelas);
(defaultVideoPreviewData = newVideoPreviewData),
$('#selectedGrade').text(defaultVideoPreviewData.gradeName),
$('#selectedGradeLesson').text(defaultVideoPreviewData.gradeName),
$('#topic-grade-name').text(defaultVideoPreviewData.gradeName),
(function () {
defaultVideoPreviewData.lessons[0].lessonSerial;
const selectedLessonText = defaultVideoPreviewData.lessons[0].name,
selectedLessonUrl = defaultVideoPreviewData.lessons[0].youtubeUrl;
$('#selectedLesson').text(selectedLessonText),
$('#selectedLessonNonSD').text(selectedLessonText),
$('#topic-lesson-name').text(selectedLessonText),
$('.video-box iframe').attr('src', selectedLessonUrl),
(document.getElementById('videoPreview').innerHTML =
`<iframe \n frameborder="0" allowfullscreen\n allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"\n src="${selectedLessonUrl}">\n </iframe>`),
createTopicsElement(defaultVideoPreviewData.lessons[0].topics),
(function (lessons) {
const chooseSubjectWrapperEl = document.getElementById('chooseSubjectWrapper');
for (let i = 0; i < lessons.length; i++)
0 === i
? (chooseSubjectWrapperEl.innerHTML = `<button type="button" class="btn-lesson" value="${lessons[i].lessonSerial}" data-video-url="${lessons[i].youtubeUrl}">${lessons[i].name}</button>`)
: (chooseSubjectWrapperEl.innerHTML += `<button type="button" class="btn-lesson" value="${lessons[i].lessonSerial}" data-video-url="${lessons[i].youtubeUrl}">${lessons[i].name}</button>`);
$('.btn-lesson').click(function () {
$('.btn-lesson.active-btn-level').removeClass('active-btn-level'), $(this).addClass('active-btn-level');
const selectedLessonVal = $(this).val(),
selectedLessonText = $(this).text(),
selectedVideoUrl = $(this).data('video-url'),
currentLesson = lessons.find(l => l.lessonSerial == selectedLessonVal);
$('#selectedLesson').text(selectedLessonText),
$('#topic-lesson-name').text(selectedLessonText),
$('#selectedLessonNonSD').text(selectedLessonText),
(document.getElementById('videoPreview').innerHTML =
`<iframe \n frameborder="0" allowfullscreen\n allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"\n src="${selectedVideoUrl}">\n </iframe>`),
createTopicsElement(currentLesson.topics),
$('#chooseSubjectModal').css('display', 'none');
});
})(defaultVideoPreviewData.lessons);
})();
}
function createSubtopicsElement(subtopics, idx) {
const subtopicList = document.getElementById('accordion-panel-topic-' + idx);
for (let i = 0; i < subtopics.length; i++) 0 === i ? (subtopicList.innerHTML = `<li>${subtopics[i]}</li>`) : (subtopicList.innerHTML += `<li>${subtopics[i]}</li>`);
}
function createTopicsElement(topics) {
const topicList = document.getElementById('topic-list');
for (let i = 0; i < topics.length; i++)
0 === i
? (topicList.innerHTML = `<li class="accordion-topic" id="accordion-topic-${i}" ><p class="font-inter font-black-secondary ls-5 font-topic-name">${topics[i].name}</p><ul class="accordion-panel-topic" id="accordion-panel-topic-${i}"></ul></li>`)
: (topicList.innerHTML += `<li class="accordion-topic" id="accordion-topic-${i}"><p class="font-inter font-black-secondary ls-5 font-topic-name">${topics[i].name}</p><ul class="accordion-panel-topic" id="accordion-panel-topic-${i}></ul></li>`),
topics[i].subtopics.length > 0 && createSubtopicsElement(topics[i].subtopics, i),
document.getElementById('accordion-topic-' + i).addEventListener('click', function () {
this.classList.toggle('active');
});
}
function createRupiahStr(amount) {
return amount.toLocaleString('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0 });
}
function createSubtotalElement(packageItem, gradeId) {
const subtotalWrapper = document.getElementById('packageTotalWrapper'),
pricePerDayEl = packageItem && packageItem.pricePerDay > 0 ? `<p class="font-inter font-blue font-hari">Hanya ${createRupiahStr(packageItem.pricePerDay)}/hari</p>` : '',
voucherPercentage = packageItem && packageItem.voucherValidation.voucherPercentage >= 0 ? packageItem.voucherValidation.voucherPercentage : 0,
originalPrice = packageItem ? createRupiahStr(packageItem.originalPrice) : 0,
finalPrice = packageItem ? createRupiahStr(packageItem.finalPrice) : 0,
isRoboguru = packageItem && packageItem.tags.find(t => t.name.includes('rubel-roboguru-plus')) ? 1 : 0;
(subtotalWrapper.innerHTML = `<div class="package-total-top">\n <div class="package-total-top-left">\n <p class="font-inter font-header-two" style="margin-bottom: 8px">\n Total\n </p>\n </div>\n <div class="package-total-top-right">\n <div style="display: flex; margin-bottom: 4px; align-items:center; column-gap:4px;">\n <p class="font-inter font-red font-diskon">${voucherPercentage}%</p>\n <p class="font-inter font-gray font-coret" >${originalPrice}</p>\n <p class="font-inter font-red font-harga">${finalPrice}</p>\n </div> \n ${pricePerDayEl}\n </div>\n \n </div>\n <div class="package-total-bottom"><button type="button" class="btn-package-save btn-orange">Simpan</button></div>`),
$('.btn-package-save').click(function () {
createContent(packageItem, gradeId, isRoboguru),
$('#packageListModal').css('display', 'none'),
(function () {
generateToast({ message: 'Info paket diperbarui sesuai pilihanmu!', status: 'success' });
document.getElementById('detail-package').scrollIntoView({ top: 0 });
})();
});
}
function pad(num) {
return num < 10 && num >= 0 ? '0' + num : num >= 0 ? num : '00';
}
$('.btn-level').click(function () {
$(this).addClass('active-btn-level');
let selectedJenjang = $(this).val();
changeGrade(selectedJenjang), (jenjangModal.style.display = 'none'), 'sd' === selectedJenjang && $('#gradeSDModal').css('display', 'flex');
let newpath = window.location.href + '?jenjang=' + selectedJenjang;
window.history.replaceState({ path: newpath }, '', newpath);
}),
$('.btn-navbar').click(function () {
$('.btn-navbar.active').removeClass('active'), $(this).addClass('active');
}),
$('.btn-sd-grade').click(function () {
$('.btn-sd-grade.active-btn-level').removeClass('active-btn-level'), $(this).addClass('active-btn-level');
const selectedGradeVal = $(this).val(),
selectedGradeName = $(this).attr('name'),
selectedGradeText = $(this).text();
$('#selectedGrade').text(selectedGradeText),
changeGrade(selectedGradeVal, selectedGradeName),
$('#gradeSDModal').css('display', 'none'),
$('#change-lesson-sd').css('display', 'flex'),
$('#topic-grade-name').text(selectedGradeText),
(function (gradeText) {
switch (gradeText) {
case 'Kelas 1 SD':
setVideoPreviewData('sd-1'), changeQueryParamOnGradeSelected('sd-1');
break;
case 'Kelas 2 SD':
setVideoPreviewData('sd-2'), changeQueryParamOnGradeSelected('sd-2');
break;
case 'Kelas 3 SD':
setVideoPreviewData('sd-3'), changeQueryParamOnGradeSelected('sd-3');
break;
case 'Kelas 4 SD':
setVideoPreviewData('sd-4'), changeQueryParamOnGradeSelected('sd-4');
break;
case 'Kelas 5 SD':
setVideoPreviewData('sd-5'), changeQueryParamOnGradeSelected('sd-5');
break;
case 'Kelas 6 SD':
setVideoPreviewData('sd-6'), changeQueryParamOnGradeSelected('sd-6');
}
})(selectedGradeText);
}),
$('.btn-smp-sma-grade').click(function () {
$('.btn-smp-sma-grade.active-btn-level').removeClass('active-btn-level'), $(this).addClass('active-btn-level');
const selectedGradeVal = $(this).val(),
selectedGradeText = $(this).text();
$('#selectedGradeLesson').text(selectedGradeText),
$('#topic-grade-name').text(selectedGradeText),
$('#gradeNonSDModal').css('display', 'none'),
setVideoPreviewData(selectedGradeVal),
changeQueryParamOnGradeSelected(selectedGradeVal);
}),
(jenjangClosing.onclick = function () {
jenjangModal.style.display = 'none';
}),
$('#packageListModalClose').click(function () {
$('#packageListModal').css('display', 'none');
}),
$('#chooseSubjectCloseModal').click(function () {
$('#chooseSubjectModal').css('display', 'none');
}),
$('#change-lesson-sd').click(function () {
$('#chooseSubjectModal').css('display', 'block');
}),
$('.navbar-select-item.lesson').click(function () {
$('#chooseSubjectModal').css('display', 'block');
}),
$('.navbar-select-item.grade').click(function () {
$('#gradeNonSDModal').css('display', 'block');
}),
$('#gradeNonSDCloseModal').click(function () {
$('#gradeNonSDModal').css('display', 'none');
});
const timer = endTime => {
let diff = endTime - new Date().getTime(),
hours = Math.floor((diff % 864e5) / 36e5),
minutes = Math.floor((diff % 36e5) / 6e4),
seconds = Math.floor((diff % 6e4) / 1e3);
(document.querySelector('#hour').textContent = pad(hours)), (document.querySelector('#minute').textContent = pad(minutes)), (document.querySelector('#second').textContent = pad(seconds));
};
let counter;
function createPackagePriceWrapperElement(packageItem, gradeId, isRoboguru) {
const packageName = packageItem.name,
hasFlashsale = '' !== packageItem.flashsale.flashsaleSerial,
originalPrice = createRupiahStr(packageItem.originalPrice),
finalPrice = createRupiahStr(packageItem.finalPrice),
discountPercentage = packageItem.voucherValidation.voucherPercentage,
subscriptionEndDate = packageItem.subscriptionEndDate,
subEndDateStr = new Date(packageItem.subscriptionEndDate).toLocaleString('id-ID', { year: 'numeric', month: 'long', day: 'numeric' }),
packageSerial = packageItem.serial,
voucherSerial = packageItem.voucherValidation.voucherSerial,
subEndDate = new Date(packageItem.subscriptionEndDate),
subStartDate = new Date(packageItem.subscriptionStartDate),
pricePerDay = (subEndDate.getTime(), subStartDate.getTime(), createRupiahStr(packageItem.pricePerDay)),
flashsaleEl = hasFlashsale
? '<div class="flashsale">\n <img\n src="https://roboguru-forum-cdn.ruangguru.com/image/edce724c-3b7a-49aa-9a34-ec89513a8a38.png"\n width="12"\n height="12"\n loading="lazy"\n alt=""\n />\n <p class="font-inter font-white font-flashsale">\n Flash Sale \n <span class="hour" id="hour">00</span>:\n <span class="minute" id="minute">00</span>:\n <span class="second" id="second">00</span>\n </p>\n </div>'
: '',
pricePerDayEl = packageItem.pricePerDay > 0 ? `<p class="font-inter font-blue font-hari">Hanya ${pricePerDay}/hari</p>` : '',
subscriptionEndDateEl =
'' !== subscriptionEndDate ? `<p class="font-inter" style="color: #5E677B; font-size: 12px; margin-bottom: 6px !important;">Paket aktif hingga ${subEndDateStr}</p>` : '';
hasFlashsale
? (counter = setInterval(function () {
timer(parseInt(packageItem.flashsale.flashsaleEndTime));
}, 1e3))
: clearInterval(counter);
(document.getElementById('package-price').innerHTML =
`\n \n <div class="detail-paket">\n <p class="font-inter font-black font-nama-paket">${packageName}</p>\n ${subscriptionEndDateEl}\n <div class="detail-paket_detail"> \n <div style="padding-top: 10px;" id="flashsale">\n ${flashsaleEl}\n <div class="detail-paket_harga mobile">\n <p class="font-inter font-red font-diskon">${discountPercentage}%</p>\n <p class="font-inter font-gray font-coret">${originalPrice}</p>\n <p class="font-inter font-red font-harga">${finalPrice}</p>\n </div>\n <div class="detail-paket_harga desktop">\n <div>\n <p class="font-inter font-red font-diskon">${discountPercentage}%</p>\n <p class="font-inter font-gray font-coret">${originalPrice}</p>\n </div> \n <p class="font-inter font-red font-harga">${finalPrice}</p>\n </div>\n ${pricePerDayEl}\n </div>\n <button class="font-inter" id="btn-change-package">Ganti<img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-ChevronRight%20(1).svg" width="16" height="16" loading="lazy" alt=""></button>\n </div> \n </div> \n <div class="detail-kelas"> \n <button class="font-inter font-white btn-orange" id="paymentMethodButton"><span class="mobile">Pilih </span> Pilih Paket</button>\n <button class="font-inter font-green btn-tanya zendesk-button" target-value="close">Tanya <img src="https://cdn-web-2.ruangguru.com/landing-pages/assets/hs/Ruangguru%20Revamp%202022/Detail%20Page/Header/ic-chat.svg" width="24" height="24" loading="lazy" alt=""></button>\n </div>\n `),
$('#btn-change-package').click(function () {
$('#packageListModal').css('display', 'flex');
}),
$('#paymentMethodButton').click(function () {
if (isRoboguru) {
window.open(`https://bayar.ruangguru.com/draft-invoice?tag=rubel-roboguru-plus&grade=${gradeId}&package_serial=${packageSerial}&voucher_serial=${voucherSerial}`);
} else {
window.open(`https://bayar.ruangguru.com/draft-invoice?tag=rubel&grade=${gradeId}&package_serial=${packageSerial}&voucher_serial=${voucherSerial}`);
}
});
const zendeskButton = document.querySelector('.zendesk-button'),
poller = (comparison, callback, timerStep = 250, maxTime = 5e3) => {
let currTime = 0;
const checkCondition = () => {
!0 === comparison() ? callback() : currTime <= maxTime && ((currTime += timerStep), setTimeout(checkCondition, timerStep));
};
checkCondition();
},
loadZendeskChat = callback => {
(() => {
if (null !== document.getElementById('ze-snippet')) console.log();
else {
const zenDeskScript = document.createElement('script');
(zenDeskScript.id = 'ze-snippet'),
(zenDeskScript.src = 'https://static.zdassets.com/ekr/snippet.js?key=a2ac30ed-dd6d-47f6-99ba-0d5aeae351a0'),
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] || document.getElementsByTagName('script')[0].parentNode).insertBefore(zenDeskScript, null);
}
})(),
callback && callback();
},
openZendeskChat = () => {
poller(
() => 'undefined' != typeof zE,
() => {
zE('messenger', 'open'),
poller(
() => {
const launcher = document.querySelector('#launcher'),
webWidget = document.querySelector('#webWidget');
return null !== launcher && null !== webWidget && '1' === webWidget.style.opacity;
},
() => {
(zendeskButton.style.opacity = '0'), localStorage.setItem('zd_hasOpened', 'true');
}
);
}
);
};
localStorage.getItem('zd_hasOpened') ? loadZendeskChat() : (zendeskButton.style.opacity = '1'),
zendeskButton.addEventListener('click', () => {
const btnValue = zendeskButton.getAttribute('target-value');
window.matchMedia('(max-width: 767px)').matches
? loadZendeskChat(openZendeskChat)
: (loadZendeskChat(openZendeskChat),
'close' == btnValue
? (loadZendeskChat(openZendeskChat), zendeskButton.setAttribute('target-value', 'open'))
: (zE('messenger', 'close'), zendeskButton.setAttribute('target-value', 'close')));
});
}
function createDescriptionPackageByName(packageName) {
const name = packageName.toLowerCase(),
utbk = name.includes('utbk'),
roboguru = name.includes('roboguru'),
animasi = name.includes('animasi');
return utbk && !roboguru
? 'Akses semua fitur ruangbelajar + persiapan masuk kampus, lengkap dengan Tes Skolastik '
: !utbk && roboguru
? 'Akses semua fitur ruangbelajar + konsultasikan PR sulit ke Tutor sampai tuntas'
: utbk && roboguru
? 'Akses semua fitur ruangbelajar + persiapan masuk kampus, lengkap dengan Tes Skolastik + konsultasikan PR sulit ke Tutor sampai tuntas'
: animasi
? 'Akses semua fitur ruangbelajar + video animasi'
: 'Video pembelajaran interaktif, latihan soal, rangkuman infografis, dan fitur seru lainnya';
}
function createContent(packageItem, gradeId, isRoboguru) {
(selectedPackageSerial = packageItem.serial),
(function (packageInformation) {
const uspList = document.getElementById('usp-list');
for (let i = 0; i < packageInformation.list.values.length; i++)
0 === i ? (uspList.innerHTML = `<li>${packageInformation.list.values[i]}</li>`) : (uspList.innerHTML += `<li>${packageInformation.list.values[i]}</li>`);
})(JSON.parse(packageItem.packageInformation)),
createPackagePriceWrapperElement(packageItem, gradeId, isRoboguru);
}
$('.btn-filter').click(function () {
$('.btn-filter.active-btn-level').removeClass('active-btn-level'), $(this).addClass('active-btn-level');
const currentClassElement = '.inputGroup.' + $(this).val();
$('.inputGroup').css('display', 'none'), $(currentClassElement).css('display', 'block'), ($(document.getElementById('packageTotalWrapper')).innerHTML = '');
}),
$(document).ready(function () {
const referrer = '' === document.referrer ? 'https://www.ruangguru.com' : document.referrer;
document.getElementById('backToReferrer').href = referrer;
});
</script>
<!-- Start of HubSpot Analytics Code -->
<script type="text/javascript">
var _hsq = _hsq || [];
_hsq.push(['setContentType', 'landing-page']);
_hsq.push(['setCanonicalUrl', 'https:\/\/www.ruangguru.com\/ruangbelajar-roboguruplus-smp']);
_hsq.push(['setPageId', '89379022990']);
_hsq.push([
'setContentMetadata',
{
contentPageId: 89379022990,
legacyPageId: '89379022990',
contentFolderId: null,
contentGroupId: null,
abTestId: null,
languageVariantId: 89379022990,
languageCode: 'id',
},
]);
</script>
<script type="text/javascript">
var hsVars = {
render_id: '0a62b084-ae39-4aed-a107-ab6abfea44e8',
ticks: 1684632205016,
page_id: 89379022990,
content_group_id: 0,
portal_id: 2828691,
app_hs_base_url: 'https://app.hubspot.com',
cp_hs_base_url: 'https://cp.hubspot.com',
language: 'id',
analytics_page_type: 'landing-page',
analytics_page_id: '89379022990',
category_id: 1,
folder_id: 0,
is_hubspot_user: false,
};
</script>
<script src="https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.mjs" type="module"></script>
<!-- Load CSS for all versions -->
<script>
// CSS loading function available for all versions
function loadFloatingCSS() {
// Check if CSS is already loaded
if (document.getElementById('fb-component-css')) {
return;
}
// Create and append CSS style block to head
const style = document.createElement('style');
style.id = 'fb-component-css';
style.textContent = `
.bantuan-container {
position: relative;
}
.bantuan-element {
position: fixed;
z-index: 999;
display: flex;
align-items: flex-end;
justify-content: flex-end;
cursor: pointer;
transition: all 0.6s ease;
}
.bantuan-top {
bottom: 11rem;
right: 2rem;
}
.bantuan-bottom {
bottom: 2rem;
right: 2rem;
}
.bantuan-top-2 {
bottom: 15rem;
right: 2rem;
}
.bantuan-top-3 {
bottom: 19rem;
right: 2rem;
}
.bantuan-bottom-2 {
bottom: 5rem;
right: 2rem;
}
.bantuan-bottom-3 {
bottom: 8rem;
right: 2rem;
}
@media (min-width: 768px) {
.bantuan-element img {
width: auto;
transition: all 0.4s ease;
}
.bantuan-top img {
width: 140px;
}
.bantuan-bottom img {
width: 140px;
}
.bantuan-top-2 img,
.bantuan-top-3 img {
width: 140px;
}
.bantuan-bottom-2 img,
.bantuan-bottom-3 img {
width: 140px;
}
.bantuan-element.clicked {
bottom: 9rem;
right: 2.5rem;
}
.bantuan-element.clicked img {
width: auto;
height: 64px;
}
}
@media (max-width: 767px) {
.bantuan-top {
bottom: 8rem;
right: 1rem;
align-items: center;
}
.bantuan-bottom {
bottom: 2rem;
right: 1.25rem;
align-items: center;
}
.bantuan-top-2 {
bottom: 12rem;
right: 1rem;
align-items: center;
}
.bantuan-top-3 {
bottom: 16rem;
right: 1rem;
align-items: center;
}
.bantuan-bottom-2 {
bottom: 5rem;
right: 1.25rem;
align-items: center;
}
.bantuan-bottom-3 {
bottom: 8rem;
right: 1.25rem;
align-items: center;
}
.bantuan-element img {
width: auto;
}
.bantuan-top img,
.bantuan-top-2 img,
.bantuan-top-3 img {
width: 96px;
}
.bantuan-bottom img,
.bantuan-bottom-2 img,
.bantuan-bottom-3 img {
width: 96px;
}
}
.bantuan-element:hover {
transform: scale(1.05);
}
.bantuan-element img {
max-width: 100%;
height: auto;
}
`;
document.head.appendChild(style);
}
// Load CSS immediately
loadFloatingCSS();
</script>
<div id="bantuan-divs-container" style="position: relative" data-product="ruangguru" data-table=""></div>
<script>
class FloatingDivsComponent {
constructor(product = 'ruangguru', table = 'rg_promo_banner') {
this.container = document.getElementById('bantuan-divs-container');
this.floatingElements = [];
this.product = product;
this.table = table;
// Configuration
this.config = {
baseApiUrl: 'https://gw.ruangguru.com/api/v3/rdb/p_ddgy8hjx5dxsqx/rg_banner/views/',
apiKey: 'vLyK3dJrDBRmOwueX2OJXibMkgsUbBk0WS4ua2p1',
maxElements: 2,
zIndexBase: 100,
};
// Build dynamic API URL based on table parameter
this.config.apiUrl = this.buildApiUrl();
this.init();
}
buildApiUrl() {
const baseUrl = this.config.baseApiUrl;
const tableName = this.table || 'rg_promo_banner';
const queryParams =
'offset=0&limit=99999&sort=rankPosition&where=(type,eq,floating)~and(showIn,anyof,landingPage)~and(hide,is,false)~and(product,eq,' +
this.product +
')&nested%5Bcta%5D%5Bfields%5D=Id,name,ctaId,imageUrl,ctaLink,targetUrl';
return `${baseUrl}${tableName}?${queryParams}`;
}
async init() {
try {
await this.fetchFloatingElements();
this.renderFloatingElements();
} catch (error) {
console.error('Failed to initialize floating divs component:', error);
}
}
async fetchFloatingElements() {
try {
const options = {
method: 'GET',
headers: {
'xc-token': this.config.apiKey || 'vLyK3dJrDBRmOwueX2OJXibMkgsUbBk0WS4ua2p1',
},
};
const urlNoco = this.config.apiUrl;
const response = await fetch(urlNoco, options);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
this.floatingElements = this.processApiResponse(data);
} catch (error) {
console.error('Error fetching floating elements:', error);
throw error;
}
}
processApiResponse(data) {
if (!data || !data.list || !Array.isArray(data.list)) {
return [];
}
// Ensure we only get maximum 2 elements
const limitedElements = data.list.slice(0, this.config.maxElements);
return limitedElements;
}
renderFloatingElements() {
if (!this.container || this.floatingElements.length === 0) {
return;
}
// Additional safeguard: ensure we never render more than maxElements
const elementsToRender = this.floatingElements.slice(0, this.config.maxElements);
// Clean up existing elements and their event listeners
this.cleanupExistingElements();
// Clear existing content
this.container.innerHTML = '';
elementsToRender.forEach((element, index) => {
const floatingDiv = this.createFloatingDiv(element, index);
this.container.appendChild(floatingDiv);
});
}
cleanupExistingElements() {
// Clear existing elements (no need for event listener cleanup with CSS approach)
const existingElements = this.container.querySelectorAll('[data-floating-element]');
existingElements.forEach(element => {
element.remove();
});
}
createFloatingDiv(element, index) {
const div = document.createElement('div');
const cta = element.cta[0]; // Use the first CTA
// Add data attribute for cleanup tracking
div.setAttribute('data-floating-element', 'true');
// Apply CSS classes based on rankPosition
const positionClass = this.getPositionClass(element.rankPosition, index);
div.className = `bantuan-element ${positionClass}`;
div.style.zIndex = this.config.zIndexBase + index;
// Create the link and image
const link = document.createElement('a');
link.href = 'https://cta.ruangguru.com/' + cta.ctaId || '#';
link.target = '_blank';
// Add tracking attributes
link.setAttribute('data-tracking-event-type', 'landing_page__core__item_click');
link.setAttribute(
'data-tracking-context',
JSON.stringify({
product_name: this.product,
cta_action: 'redirection',
cta_action_detail: link.href,
item_type: 'floating',
item_name: element.name || 'Floating element',
item_category: 'payment',
item_position: index,
item_serial: null,
section_type: 'floating_item',
section_position: 'body',
section_name: 'floating_item',
})
);
const img = document.createElement('img');
img.src = element.imageUrl + '?h=200&convert=webp';
img.alt = element.name || 'Floating element';
img.loading = 'lazy';
// Add click tracking
link.addEventListener('click', () => {
this.trackClick(element, cta);
});
link.appendChild(img);
div.appendChild(link);
return div;
}
getPositionClass(rankPosition, index) {
// Define positioning classes based on rankPosition
if (rankPosition === 1) {
return 'bantuan-top'; // Top position
} else if (rankPosition === 2) {
return 'bantuan-bottom'; // Bottom position
} else {
// For additional elements, distribute them evenly
return `bantuan-${index % 2 === 0 ? 'top' : 'bottom'}-${Math.floor(index / 2) + 1}`;
}
}
trackClick(element, cta) {
// Implement click tracking logic here
console.log('Floating element clicked:', {
elementId: element.Id,
elementName: cta.name,
ctaId: cta.ctaId,
targetUrl: cta.targetUrl,
});
}
// Public method to manually refresh
async refresh() {
try {
await this.fetchFloatingElements();
this.renderFloatingElements();
} catch (error) {
console.error('Failed to refresh floating elements:', error);
throw error;
}
}
// Public method to get current floating elements
getFloatingElements() {
return [...this.floatingElements];
}
}
// Initialize the component when DOM is ready
document.addEventListener('DOMContentLoaded', () => {
// Get product and table parameters from data attributes
const container = document.getElementById('bantuan-divs-container');
const product = container.getAttribute('data-product') || 'ruangguru';
const table = container.getAttribute('data-table') || 'rg_promo_banner';
new FloatingDivsComponent(product, table);
});
// Export for use in other modules if needed
if (typeof module !== 'undefined' && module.exports) {
module.exports = FloatingDivsComponent;
}
</script>
<!-- Tracker -->
<script src="https://unpkg.com/analytics@0.8.1/dist/analytics.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/analytics-plugin-trackable/dist/analytics-plugin-trackable.min.js"></script>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N8DPXH6" height="0" width="0" style="display: none; visibility: hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<script type="text/javascript" defer>
/* Initialize analytics */
var Analytics = _analytics.init({
app: 'brainAcademyLandingPage',
debug: false,
plugins: [analyticsTrackable()],
});
Analytics.ready(function () {
Analytics.page();
});
</script>
<style>
@media (min-width: 1025px) {
.breadcrumb-item > a,
.breadcrumb-item.active {
font-size: 16px;
line-height: 24px;
}
}
@media (max-width: 1024px) {
.breadcrumb-item > a,
.breadcrumb-item.active {
font-size: 12px;
line-height: 20px;
}
}
.breadcrumb {
padding: 0 1rem;
margin: 0;
}
.breadcrumb-item > a,
.breadcrumb-item.active {
font-family: 'Inter';
color: #ffffff !important;
}
.breadcrumb-item > a {
font-weight: 400;
}
.breadcrumb-item.active {
font-weight: 600;
}
.breadcrumb-item + .breadcrumb-item::before {
color: #ffffff !important;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/template_assets/10729457848/1615619794843/Templates/Custom/Page/Fadhli/All_Template_for_Marketing_Engineer/Source_Modal_Video/modal-video.js"></script>
<script src="https://cdn-web-2.ruangguru.com/landing-page-web/public/staticpages/www.ruangguru.com/hs-fs/hub/2828691/hub_generated/template_assets/10729457994/1615619961343/Templates/Custom/Page/Fadhli/All_Template_for_Marketing_Engineer/Source_Modal_Video/jquery-modal-video-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
<script>
$('.js-video-button').modalVideo({
youtube: {
controls: 0,
nocookie: true,
},
});
</script>
<!-- Generated by the HubSpot Template Builder - template version 1.03 -->
</body>
</html>