Lihat Foto
Pola garis yang sejajar dengan arah kiblat di jembatan akses masuk utama Jakarta Internasional Stadium (JIS), Jakarta Utara, Minggu (13/3/2022).(KOMPAS.com/SINGGIH WIRYONO)
KOMPAS.com - DKI Jakarta kini punya stadion bertaraf internasional selain Stadion Gelora Bung Karno (GBK). Stadion tersebut bernama Jakarta International Stadium (JIS). Stadion tersebut baru saja diresmikan di bulan April 2022 lalu.
Stadion ini dianggap menjadi pengganti Stadion Lebak Bulus yang merupakan kandang Persija. Namun jangan keliru menganggap JIS sebagai milik Persija.
Dalam sejarahnya, JIS berdiri di atas lahan yang dulunya merupakan kawasan Taman Bersih Manusia Wibawa (BMW).
Taman seluas 66,6 hektare merupakan aset Pemerintah Provinsi DKI Jakarta yang kemudian diperuntukan sebagai rencana pembangunan stadion bertaraf internasional. Hal itu turut dijelaskan dalam Peraturan Gubernur Nomor 14 Tahun 2019.
Dalam Pasal 3 berbunyi "Pemerintah Daerah mengembangkan Kawasan Olahraga Terpadu pada lahan pengganti stadion lebak bulus seluas 265.335,99 m2 (dua ratus enam puluh lima ribu tiga ratus tiga puluh lima koma sembilan sembilan meter persegi) di Jalan RE Martadinata/Sunter Permai Kelurahan Papanggo, Kecamatan Tanjung Priok, Kota Administrasi Jakarta Utara".
Baca juga: Wagub DKI Tegaskan JIS Dibangun untuk Kegiatan Olahraga
Pembangunannya sendiri dilakukan oleh PT Jakarta Propertindo (Jakpro) yang merupakan salah satu BUMD Pemprov DKI Jakarta. Pemprov DKI Jakarta menugaskan PT Jakarta Propertindo (Jakpro) untuk memimpin pembangunan sekaligus pengelolaannya.
Stadion BMW dibangun selama tiga tahun, yakni mulai tahun 2019 hingga 2021. Anggarannya berasal dari penyertaan modal daerah (PMD) Pemprov DKI Jakarta kepada PT Jakpro.
PMD yang dikucurkan untuk membangun Stadion JIS yakni Rp 900 miliar pada tahun 2019. Kemudian Rp 1,182 triliun di tahun 2020 dan Rp 2,464 triliun di tahun 2021 yang dananya berasal dari pinjaman (Pemulihan Ekonomi Nasional). Total semuanya Rp 4,546 triliun dengan skema PMD multiyears atau tahun jamak.
Sehingga bisa dipastikan Stadion JIS dimiliki oleh Pemprov DKI dan dikelola oleh PT Jakpro.
Stadion JIS sendiri diperuntukkan bagi siapapun yang ingin berlatih. Tak hanya Persija, Timnas Indonesia di bawah PSSI juga akan menggunakannya.
Kerjasama antara PSSI bersama PT Jakarta Propertindo (JakPro) sendiri telah tertuang dalam perjanjian kerja sama yang dibuat pada Rabu, 18 Agustus 2021 lalu terkait penggunaan JIS.
Mengutip dari postingan akun instagram @jakintstadium, JIS adalah salah satu stadion bola terbesar yang ada di Indonesia dengan kapasitas mencapai 82.000 penonton
JIS sendiri punyai keunikan yaitu memiliki trek joging atau sky view deck. Biasanya kalau di stadion bola lainnya trek joging ada di sebelah persis dengan lapangan tapi di JIS joging trek ada di paling atas.
Panjang trek jogingnya sekitar 800 meter dengan jarak lebar trek 3,5 meter dan tinggi dari atas tanah mencapai sekitar 72 meter.
Simak breaking news dan berita pilihan kami langsung di ponselmu. Pilih saluran andalanmu akses berita Kompas.com WhatsApp Channel : https://www.whatsapp.com/channel/0029VaFPbedBPzjZrk13HO3D . Pastikan kamu sudah install aplikasi WhatsApp ya.
Simpan artikel
Tidak tertarik
Tutup
`);
var wSpecStop = createElementFromHTML(`
Konten disembunyikan.
Muat ulang halaman untuk perbarui rekomendasi.
Urungkan
`);
reactionPopup.querySelector('.buttonShare').setAttribute('data-title', item.title);
reactionPopup.querySelector('.buttonShare').setAttribute('data-url', itemUrl);
reactionPopup.querySelector('.buttonShare').setAttribute('data-campaign', 'AIML_Widget_Desktop');
let userFeedback = new UserFeedback(resultObj.engine['tracker_algsrc'], itemUrl + tracker_params, jxRecHelper, index);
reactionPopup.querySelector('.buttonBookmark').addEventListener('click', function() {
do_bookmark(itemUrl, index, userFeedback);
});
reactionPopup.querySelector('.buttonShare').addEventListener('click', function() {
userFeedback.event('share');
});
reactionPopup.querySelector('.buttonNotInterest').addEventListener('click', function() {
if (getCookie('kmps_usrid')) {
hideThisArt(this);
userFeedback.event('not-interested');
} else {
const parentAction = this.parentElement.parentElement.parentElement
if (!!parentAction) {
let indexElement = parentAction.getAttribute('data-index')
if (indexElement != 'undefined') {
localStorage.setItem('reaction_not_interest_temp', JSON.stringify({
urlpage: items[indexElement].url
}))
}
}
window.location.href = "https://account.kompas.com/login/a29tcGFz/" + btoa(window.location.href);
}
});
/**
* trigger action "userFeedback" that user not interest item before, when not interest without login
*/
if (getCookie('kmps_usrid') && localStorage.getItem('reaction_not_interest_temp')) {
const tempUrlNotInterest = JSON.parse(localStorage.getItem('reaction_not_interest_temp'))
if (itemUrl == tempUrlNotInterest.urlpage) {
userFeedback.event('not-interested');
localStorage.removeItem('reaction_not_interest_temp');
}
}
wSpecStop.querySelector('.wSpec-stop-undo').addEventListener('click', function() {
showThisArt(this);
userFeedback.event('un-not-interested');
});
recItem.appendChild(buttonOption);
recItem.appendChild(reactionPopup);
recItem.appendChild(wSpecStop);
}
var recItemWrapperA = createElement('a', null, null, null);
recItemWrapperA.setAttribute('href', itemUrl + tracker_params);
var titleDiv = createElement('div', null, null, [cssClasses.title]);
var titleTextNode = document.createTextNode(item.title);
if (item.itemType == 'video') {
var iconVideo = createElement('div', null, null, ['icoInline', 'icoVideo']);
iconVideo.style.marginRight = '5px';
titleDiv.appendChild(iconVideo);
}
titleDiv.appendChild(titleTextNode);
var sourceDiv = null;
if (item.hasOwnProperty('method')) {
sourceDiv = createElement('div', null, null, [cssClasses.source], resultObj.engine['type'] + ' . ' + item.method.toUpperCase());
} else {
var sourceDiv = createElement('div', null, null, [cssClasses.source], resultObj.engine['type']);
}
var textWrapper = createElement('div', null, null, [cssClasses.text_wrapper]);
textWrapper.appendChild(categoryDiv);
textWrapper.appendChild(titleDiv);
textWrapper.appendChild(sourceDiv);
recItemWrapper.appendChild(imgWrapper);
recItemWrapper.appendChild(textWrapper);
recItemWrapperA.appendChild(recItemWrapper);
recItem.appendChild(recItemWrapperA);
widgetWrapper.appendChild(recItem);
// hook up the click handler for this item
// recItem.onclick = handleClick.bind(null, jxRecHelper, itemUrl + tracker_params, index);
recItemWrapperA.onclick = handleClick.bind(null, jxRecHelper, itemUrl + tracker_params, index);
});
} // end while
var endDate = new Date();
var loadtime = (endDate.getTime() - startDate.getTime());
trackEventGa('AIML Article Recommendation', 'Content Loaded', 'algsrc='+algsrc+',site=NEWS,device=desktop,loadtime=' + loadtime)
let domain = window.location.hostname;
if(domain=='www.kompas.com'){
var url=window.location.href.split("/");
domain=url[2]+'/'+url[3]
}
let user_subs_type = "Gues";
let subs_type = "";
let is_lgn = 0;
let engine = algsrc;
if(getCookie('kmps_usrid')){is_lgn=1};
let time_load = loadtime;
resolve();
/***
* JXRECSDK NOTES 3 of 5 -
* pass all the info about the items to the rec helper
* each one is an object: ALL MANDATORY
* div
* id
* pos
*/
jxRecHelper.items(widgetItemArr);
/***
* JXRECSDK NOTES 4 of 5 -
* Call the ready() of the helper object when the recommendation
* results have been populated to the widget
* (This will register the action=ready event)
*/
if (resultObj.engine['type'] == 'api-1') {
jxRecHelper.ready(resultObj.options.algo + ":" + resultObj.options.version);
} else {
jxRecHelper.ready(resultObj.engine['type']);
}
} else {
jxRecHelper.error(204);
console.error("Error: no recommendation items");
return;
}
} catch (err) {
jxRecHelper.error(901);
console.log(err.stack);
let domain = window.location.hostname;
if(domain=='www.kompas.com'){
var url=window.location.href.split("/");
domain=url[2]+'/'+url[3]
}
let user_subs_type = "Gues";
let subs_type = ""
let is_lgn = 0;
let engine = algsrc;
if(getCookie('kmps_usrid')){is_lgn=1};
let endDate = new Date();
let time_load = (endDate.getTime() - startDate.getTime());
}
});
}
const _jxRecSdkURL = 'https://kgdata-cdn.s3.ap-southeast-1.amazonaws.com/tracker/p/kompasreco/oval_web_analytics_latest.js';
var startDate = new Date();
class OneWidget {
constructor() {
//this is also the one we will pass to the JX rec helper object when
//we instantiate it:
//In this implementation most of these come from the options obj
//on the publisher page.
this._options = {
accountid: '9262bf2590d558736cac4fff7978fcb1',
pageurl: 'https://megapolitan.kompas.com/read/2022/05/31/00300071/siapa-pemilik-stadion-jis-',
widget_id: '1000183-6xWeiWZFIM',
type: 'pages',
container: 'rekomendasi-konten-pilihan-untukmu-aiml',
keywords: content_tags,
title: title,
customid: "1",
count: 14,
};
this._containerId = this._options.container;
this._container = document.getElementById(this._containerId);
this._engines = [{"url":"https:\/\/recommendation.kgdata.dev\/rec\/kompascom\/api\/v2\/recommendation\/item","method":"POST","pageurl":"https:\/\/megapolitan.kompas.com\/read\/2022\/05\/31\/00300071\/siapa-pemilik-stadion-jis-","system":"kg","type":"api-2","tracker_params":"?source=widgetML","tracker_algsrc":"C","count":14,"page_status":"read","excludeitemids":["2022053100300071"],"multiFormat":true}];
}
kickOff() {
startDate = new Date();
const rand = Math.floor(Math.random() * 1000);
/*const randSystem = Math.floor(Math.random() * 3);
this._engine = this._engines[randSystem]
if (location.hostname.indexOf('lestari') != -1) {
this._engine = this._engines[1]
}*/
this._engine = this._engines[0];
this._options.system = this._engine['system']
trackEventGa('AIML Article Recommendation', 'Widget load', 'algsrc=' + this._engine['tracker_algsrc'] + ',site=NEWS,device=desktop')
let promJXSDK = fetchJSFileP(_jxRecSdkURL);
let thisObj = this;
// first we wait on the JX REC SDK to be loaded and initialized
let recHelperObj = null;
let recResults = null;
promJXSDK
.then(function() {
/***
* JXRECSDK NOTES 1 of 5 - INSTANTIATION OF A JX REC HELPER OBJECT
* Call this AFTER JX REC SDK is loaded but BEFORE you call your REC
* backend.
*
* param: MANDATORY options object
* options object must at a minimal have
* accountid: get from jixie
* widgetid: get from jixie
* container: DIV ID of the destination div to house the widget
* (for jixie widget this is just the options object passed from the page)
*
* (This will also register the action=load event)
*/
recHelperObj = jxRecMgr.createJxRecHelper(thisObj._options);
let basicInfo = thisObj._options;
basicInfo.engine = thisObj._engine
if (basicInfo.engine.type == 'api-1') {
var options = {
count: basicInfo['count'],
adpositions: "",
keywords: basicInfo['keywords'],
title: basicInfo['title'],
date_published: "2022-05-31",
pagecategory: "NEWS",
algo: "mixed"
};
if(getCookie('kmps_usrid')){
var kg = {
pagetype:basicInfo.engine.page_status,
uid:getCookie('kmps_usrid'),
ukid:getCookie('kmp_uid')
}
if(basicInfo.engine.page_status=='read'){
kg['excludeitemids'] = basicInfo.engine.excludeitemids;
kg['multiFormat'] = true;
}
options['additional'] = {
kg:kg
};
}
return recHelperObj.getJxRecommendations(options);
} else {
return fetchRecommendationsP(basicInfo, recHelperObj.getJxUserInfo());
}
})
.then(function(resp) {
if (thisObj._engine.type == 'api-3') {
recResults = new Object
recResults.items = resp.docs.result;
} else {
recResults = resp;
}
recResults.engine = thisObj._engine;
if (!resp || !recResults.items || recResults.items.length == 0) {
/***
* JXRECSDK NOTES 2 of 5 -
* Call the error() function on the recHelper when either an error
* has occured in the fetching or there are no recommended items
*
* (This will register the action=error event)
*/
recHelperObj.error(204);
throw "no recommendation results";
}
})
.then(function() {
// everything is ready (recommendation results, css):
document.getElementById("rekomendasi-konten-pilihan-untukmu-aiml").classList.remove("-loading");
document.querySelector('.wSpec-list').remove();
createDisplay(rand, thisObj._container, recResults, recHelperObj)
.then(function() {
toggleDropdown();
//observe lozad
lozad('.lozad', {
load: function(el) {
el.src = el.dataset.src;
el.onload = function() {
el.classList.add('fade')
}
}
}).observe()
})
})
.catch(function(error) {
console.log(`Unable to create recommendations widget ${error.stack} ${error.message}`);
});
}
}
var limit_gtm_ready = 1;
function check_gtm_ready() {
if ('ga' in window) {
// create a new instance of our widget based on the options
const newW = new OneWidget();
newW.kickOff();
} else {
const timeout_gtm_ready = setTimeout(check_gtm_ready, 500)
limit_gtm_ready += 1;
if (limit_gtm_ready > 10) {
clearTimeout(timeout_gtm_ready);
const newW = new OneWidget();
newW.kickOff();
}
}
}
check_gtm_ready()
document.querySelector('.wSpec-secret').addEventListener('click', function(e) {
e.preventDefault();
let wSl = document.querySelectorAll('.wSpec-source');
if (wSl.length > 0) {
for (let i = 0; i {
el.addEventListener('click', function() {
el.parentElement.classList.toggle('-active')
let saved = el.parentElement.getAttribute('data-saved')
let kmps_usrid = getCookie('kmps_usrid');
if (kmps_usrid && !saved && el.parentElement.classList.contains('-active')) {
let url = el.parentElement.getAttribute('data-url');
let guid = get_guid(url);
check_bookmark(
kmps_usrid,
guid
).then(function(resp) {
if (resp.hasOwnProperty('total_data')) {
if (resp.total_data > 0) {
el.parentElement.querySelector('.buttonBookmark').classList.add('-active');
el.parentElement.querySelector('.buttonBookmark').innerHTML = '
Hapus dari tersimpan';
el.parentElement.setAttribute('data-saved', 'true');
} else {
el.parentElement.setAttribute('data-saved', 'false');
}
}
})
}
})
document.addEventListener("click", function(e) {
// console.log(e.target)
if (el.contains(e.target)) {
// console.log(tdd)
} else {
el.parentElement.classList.remove('-active')
}
});
});
}
}
function check_bookmark(kmps_usrid, guid) {
let url = `https://api.kompas.com/2021/reaction/bookmark/list?kmps_usrid=${kmps_usrid}&guid=${guid}`;
return new Promise(function(resolve, reject) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
resolve(JSON.parse(this.responseText))
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
});
}
function do_bookmark(pageurl, pos, userFeedback) {
const wSpecItem = document.querySelector(`.wSpec-item[data-index="${pos}"]`);
const btnBookmark = wSpecItem.querySelector('.buttonBookmark');
const kmps_usrid = getCookie('kmps_usrid');
const guid = get_guid(pageurl);
const type = pageurl.match(/\/watch\/(\d+)/) ? 'video' : 'article';
if (kmps_usrid) {
if (btnBookmark.classList.contains('-active')) {
set_unbookmark({
guid: guid,
kmps_usrid: kmps_usrid,
type: type
}).then(function(resp) {
btnBookmark.classList.remove('-active');
btnBookmark.innerHTML = '
Simpan artikel';
reactionToast('Artikel berhasil dihapus dari list yang disimpan');
userFeedback.event('un-save');
}).catch(function(resp) {
// message: "Data doesn't exists"
if (resp.hasOwnProperty('message') && resp.message.includes('exist')) {
btnBookmark.classList.remove('-active');
btnBookmark.innerHTML = '
Simpan artikel';
reactionToast('Artikel berhasil dihapus dari list yang disimpan');
}
})
} else {
const user_bookmark_url = "https://activity.kompas.com/saved?order=desc";
set_bookmark({
guid: guid,
kmps_usrid: kmps_usrid,
type: type,
publisher: 'kompas',
platform: 'desktop'
}).then(function(resp) {
btnBookmark.classList.add('-active');
btnBookmark.innerHTML = '
Hapus dari tersimpan';
reactionToast('Artikel berhasil disimpan', user_bookmark_url);
userFeedback.event('save');
}).catch(function(resp) {
// message: "Data already exist"
if (resp.hasOwnProperty('message') && resp.message.includes('exist')) {
btnBookmark.classList.add('-active');
btnBookmark.innerHTML = '
Hapus dari tersimpan';
reactionToast('Artikel berhasil disimpan', user_bookmark_url);
}
})
}
} else {
const login_url = "https://account.kompas.com/login/a29tcGFz/" + btoa(window.location.href);
window.location.href = login_url;
}
}
function set_bookmark(data) {
const url = "https://api.kompas.com/2021/reaction/bookmark/add";
return new Promise(function(resolve, reject) {
const xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 201) {
resolve(JSON.parse(this.responseText));
} else if (this.readyState == 4 && this.status == 400) {
reject(JSON.parse(this.responseText));
}
};
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send(formBody(data));
});
}
function set_unbookmark(data) {
const url = "https://api.kompas.com/2021/reaction/bookmark/delete";
return new Promise(function(resolve, reject) {
const xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
resolve(JSON.parse(this.responseText));
} else if (this.readyState == 4 && this.status == 400) {
reject(JSON.parse(this.responseText));
}
};
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlhttp.send(formBody(data));
});
}
class UserFeedback {
constructor(engine, pageurl, jxRecHelper, pos) {
this.engine = engine;
this.pageurl = pageurl;
this.jxRecHelper = jxRecHelper;
this.pos = pos;
}
event(feedback) {
if (this.engine == 'C') {
const xmlhttp = new XMLHttpRequest();
let params = {
domain: 'kompas.com',
ce_userid: getCookie('kmps_usrid'),
ce_sessionid: getCookie('ukid'),
ce_pageurl: this.pageurl,
engine: 'C',
ce_feedback: feedback
}
xmlhttp.open("GET", 'https://apis.kgdata.dev/v1/aiml/feedback-widgetml' + formatParams(params));
xmlhttp.send();
} else if (this.engine == 'V') {
if (feedback == 'share') {
this.jxRecHelper.shared(this.pos);
} else if (feedback == 'save') {
this.jxRecHelper.bookmarked(this.pos);
} else if (feedback == 'not-interested') {
this.jxRecHelper.hidden(this.pos);
} else if (feedback == 'un-not-interested') {
this.jxRecHelper.unhidden(this.pos);
}
}
}
}
function formatParams(params) {
return "?" + Object
.keys(params)
.map(function(key) {
return key + "=" + encodeURIComponent(params[key])
})
.join("&")
}
document.addEventListener("click", function(e){
let dx = document.querySelectorAll('[data-dropdown]')
if(dx) {
dx.forEach(function(el){
if(el.contains(e.target)) {
el.parentElement.classList.toggle('-active')
} else {
el.parentElement.classList.remove('-active')
}
})
}
})