var __id = function(a){ return document.getElementById(a); } const xdb = function(v = 0, func){ var listdbname = ['dbmask']; var dbname = 'masuksini'; if (localStorage.getItem('dbv') != undefined) { if (localStorage.getItem('dbv') != v) { indexedDB.deleteDatabase("toDoList"); } } var dbs = null; var request = window.indexedDB.open(dbname, 4); request.onsuccess = function(event) { dbs = request.result; func({ add: function(obj){ var table = 'dbmask'; // cek data var id = obj.id; this.read(id, function(aw){ if (aw == null) { var rq = dbs.transaction([table], "readwrite") .objectStore(table) .add(obj); }else{ var request = dbs.transaction([table], "readwrite") .objectStore(table) .delete(id) var rq = dbs.transaction([table], "readwrite") .objectStore(table) .add(obj); } }) return this; }, read:function(id, func) { var table = 'dbmask'; var transaction = dbs.transaction([table]); var objectStore = transaction.objectStore(table); var request = objectStore.get(id); request.onerror = function(event) { console.log("Unable to retrieve daa from database!"); }; request.onsuccess = function(event) { // Do something with the request.result! if(request.result) { func(request.result) } else { func(null); } }; return this; } }) }; request.onupgradeneeded = function(event) { dbs = event.target.result; dbs.onerror = function(event) { note.innerHTML += "
  • Error loading database.
  • "; }; // Create an objectStore for this database for (var i = 0; i < listdbname.length; i++) { dbs.createObjectStore(listdbname[i], {keyPath: "id"}); } }; localStorage.setItem('dbv', v); } // start db $(document).ready(function(){ Array.from(document.querySelectorAll('.nav-item .nav-link')).forEach(function(alp){ if (location.pathname == "/" && alp.getAttribute('href') == '/') { alp.className += ' active'; }else{ if(location.pathname.includes(alp.getAttribute('href')) && alp.getAttribute('href') != '/'){ alp.className += ' active'; } } }) }) function formatRupiah(angka, prefix) { var number_string = angka.toString().replace(/\./g, ",").replace(/[^,\d]/g, ""), split = number_string.split(","), sisa = split[0].length % 3, rupiah = split[0].substr(0, sisa), ribuan = split[0].substr(sisa).match(/\d{3}/gi); // tambahkan titik jika yang di input sudah menjadi angka ribuan if (ribuan) { separator = sisa ? "." : ""; rupiah += separator + ribuan.join("."); } rupiah = split[1] != undefined ? rupiah + "," + split[1] : rupiah; return prefix == undefined ? rupiah : rupiah ? "" + rupiah : ""; } const db = function() { return { urlsave : "https://indowebs.my.id/admin/api/save", urlget: "/api", // urlget: "http://localhost:8080/api/okb", data: { table: "", master: false, limit: "", order: "", select: " * ", condition: "", setCreate: 0, leftJoin: "", saveset: 0, updatedata: null }, table: function(a){ this.data.table = a; return this; }, master:function(n){ this.data.master = n; return this; }, condition : function(a = []){ var sp = " WHERE "; var table = this.data.table; sp += a.map(function(x,i){ return ` ${x.opsi} ${table}.${x.data[0]} ${x.data[1]} ${x.data[2]} `; }).join(" ") this.data.condition = sp; return this; }, like : function(a = []){ var sp = " "; if (this.data.condition != "") { sp = ""; }else{ sp = " WHERE "; } sp += a.map(function(x,i){ return ` ${x.opsi} ${x.data[0]} ${x.data[1]} ${x.data[2]} `; }).join(" ") if (this.data.condition != "") { this.data.condition += ' AND ('+sp+')'; }else{ this.data.condition += sp; } return this; }, select: function(a){ this.data.select = a; return this; }, update: function(a = {}){ var up = " UPDATE "+this.data.table+" SET "; up += Object.keys(a).map(function(x, s){ return ` ${x} = '${a[x]}' `; }).join(",") up += this.data.condition; this.data.updatedata = up; return this; }, leftJoin: function(a = []){ this.data.leftJoin = ''; var pp = this; a.forEach(function(y,i){ pp.data.leftJoin += " LEFT JOIN "+y[0]+" ON "+y[1]+" "+y[2]+" "+y[3]+" "; }) return this; }, order: function(a,b = "ASC"){ this.data.order = ` ORDER BY ${a} ${b} `; return this; }, limit: function(a, b){ this.data.limit = ` LIMIT ${a}, ${b} `; return this; }, save: function(obj = {}){ var dat = Object.keys(obj); var dd = dat.map(function(x,c){ return '"'+obj[x]+'"'; }).join(","); this.data.saveset = 1; this.data.save = `INSERT INTO ${this.data.table} (${dat.join(",")}) VALUES (${dd}) `; return this; } ,createTable: function(a = {}){ this.data.setCreate = 1; this.data.createTable = "CREATE TABLE "+this.data.table+" ("; this.data.createTable += " id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, "; var pp = this; Object.keys(a).forEach(function(x, i){ if(i == (Object.keys(a).length - 1)){ pp.data.createTable += " "+x+" "+a[x]+" "; }else{ pp.data.createTable += " "+x+" "+a[x]+" , "; } }) this.data.createTable += " ) "; return this; }, text2Binary : function( string) { return string.split('').map(function (char) { return char.charCodeAt(0).toString(2); }).join('2'); return this; }, get: function(func, qr = null, cekm = 1){ var ck = this; var query = ""; query = ` SELECT ${this.data.select} FROM ${this.data.table} ${this.data.leftJoin} ${this.data.condition} ${this.data.order} ${this.data.limit} `; //alert(query); if(qr != null){ query = qr; } if(this.data.setCreate == 1){ query = this.data.createTable; } if(this.data.saveset == 1){ query = this.data.save; } if(this.data.updatedata != null){ query = this.data.updatedata; } xdb(3, function(a){ a.read(ck.text2Binary(query), function(c){ if (c != null) { if(c.content.data != undefined){ func(c.content.data, ck, query, c.content.count); } if (ck.data.master == false) { fetch(ck.urlget+'/'+ck.text2Binary(query)) .then(response => response.json()) .then(data => { xdb(3, function(a){ a.add({ id: ck.text2Binary(query), content: data }) }) if(JSON.stringify(c.content) != JSON.stringify(data)){ func(data.data, ck, query, data.count) } }) } }else{ fetch(ck.urlget+'/'+ck.text2Binary(query)) .then(response => response.json()) .then(data => { xdb(3, function(a){ a.add({ id: ck.text2Binary(query), content: data }) }) func(data.data, ck, query, data.count); }) } }) }); return this; } } } // bcari data terdekat dengan lokasi function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } else { view.innerHTML = "Yah browsernya ngga support Geolocation bro!"; } } function showPosition(position) { var obj = { latitude: position.coords.latitude, longtitude: position.coords.longitude } alert(obj) } function get_location() { if (Modernizr.geolocation) { navigator.geolocation.getCurrentPosition(show_map); } else { globalThis.glocation = null; } } function show_map(r){ console.log(r) } get_location() String.prototype.replaceAll = function(str1, str2, ignore) { return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g,"\\$&"),(ignore?"gi":"g")),(typeof(str2)=="string")?str2.replace(/\$/g,"$$$$"):str2); } async function getFileFromUrl(url, name, defaultType = 'image/jpeg'){ const response = await fetch(url); const data = await response.blob(); return new File([data], name, { type: response.headers.get('content-type') || defaultType, }); } const toBase64 = file => new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = error => reject(error); }); $(document).ready(function(){ $(".owl-carousel").owlCarousel({ margin:30, loop: true, autoWidth:true, items:4, autoHeight:true }) });