Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const base_url = "http://localhost/pede/";
- var LoadingCircle = `<div class="spinner-border text-center spinner-border-sm" role="status">
- <span class="visually-hidden">Mengirim...</span>
- </div>`;
- const getSession = async () => {
- const response = await fetch(`${base_url}auth/getsession`);
- const data = response.json();
- return data;
- }
- async function fetchData(url, elementId) {
- try {
- const response = await fetch(base_url + url);
- if (!response.ok) {
- throw new Error(`HTTP error! Status: ${response.status}`);
- }
- const data = await response.text();
- document.getElementById(elementId).innerHTML = data;
- } catch (error) {
- console.error('Fetch error:', error);
- throw error;
- }
- }
- async function getData(url) {
- try {
- const response = await fetch(base_url + url);
- if (!response.ok) {
- throw new Error(`HTTP error! Status: ${response.status}`);
- }
- const data = await response.json();
- if (typeof data.success !== 'undefined') {
- if (data.success == false) {
- cekLogin(data.data);
- }
- }
- return data;
- } catch (error) {
- // console.error(error);
- // throw error;
- }
- }
- function bulatinKoma(number) {
- var angka = parseFloat(number);
- if (angka % 1 !== 0) { // Jika ada bagian desimal
- angka = angka.toFixed(2); // Memastikan ada dua angka di belakang koma
- }
- return angka;
- }
- async function dataPOST(url, data) {
- await fetch(base_url + url, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded', // Adjust content type as needed
- },
- body: new URLSearchParams(data).toString(),
- })
- .then(response => response.json())
- .then(data => {
- if (data.success === false) {
- cekLogin(data.data);
- }
- return JSON.stringify(data);
- })
- .catch(error => {
- toastr.error('Error:', error);
- });
- }
- function cekLogin(data) {
- if (data != null) {
- if ('pesanError' in data) {
- if (data.pesanError == 'Token tidak valid dan tidak terdaftar') {
- window.location.href = `${base_url}/auth/forcelogout`;
- return;
- } else if (data.pesanError == 'Token sudah kadaluarsa, silahakn generate ulang') {
- window.location.href = `${base_url}/auth/forcelogout`;
- return;
- }
- }
- }
- }
- function updateProgressBar(percentage) {
- const progressBar = document.getElementById('progress-bar');
- progressBar.style.width = percentage.toFixed(2) + '%';
- if (percentage !== 0) {
- localStorage.setItem('loadStatus', percentage.toFixed(2));
- } else {
- localStorage.removeItem('loadStatus')
- }
- }
- function hurufBesar(str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
- }
- function enterKata(text, wordsPerLine = 5) {
- var words = text.split(" ");
- var result = [];
- for (var i = 0; i < words.length; i++) {
- result.push(words[i] + " ");
- if ((i + 1) % wordsPerLine === 0) {
- result.push("</br>");
- }
- }
- return result.join('');
- }
- async function paginasiList(keyword = '', total, page, functionList, id, totalData = 0) {
- var paginator = document.getElementById(id);
- var nav = document.createElement('nav');
- nav.className = "Page navigation example";
- var ul = document.createElement('ul');
- ul.className = "pagination";
- var back = document.createElement('li');
- back.className = `page-item ${page == 1 ? 'disabled' : ''}`;
- back.innerHTML = `<a class="page-link link" href="javascript:void(0)" id="paginateBack"
- onclick="${functionList}'${page - 1}'), spiner(this.id)" aria-label="Previous">
- <span aria-hidden="true">
- <i class="ti ti-chevrons-left fs-4"></i>
- </span>
- </a>`
- ul.appendChild(back)
- for (i = 1; i <= total; i++) {
- var list = document.createElement('li');
- list.className = 'page-item';
- list.innerHTML = `<a class="page-link link ${page == i ? 'active' : ''}" id="paginate${i}"
- href="javascript:void(0)" onclick="${functionList}${i}, '${keyword}'), spiner(this.id);">
- ${i}
- </a>`;
- ul.appendChild(list);
- }
- var next = document.createElement('li');
- next.className = `page-item ${page == total ? 'disabled' : ''}`;
- next.innerHTML = ` <a class="page-link link" href="javascript:void(0)" id="paginateNext"
- onclick="${functionList}'${page + 1}'), spiner(this.id)" aria-label="Next">
- <span aria-hidden="true">
- <i class="ti ti-chevrons-right fs-4"></i>
- </span>
- </a>`
- ul.appendChild(next);
- nav.appendChild(ul);
- paginator.innerHTML = '';
- paginator.appendChild(nav);
- paginator.innerHTML += `</br>
- <p class="ms-2 mt-2">
- Data: <span id="totalDataPagination">${totalData}<span>
- </p>`;
- }
- function formatJadwal(date) {
- const formattedDate = new Date(date).toLocaleDateString('en-US', {
- year: 'numeric',
- month: 'short',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit',
- hour12: false
- });
- return formattedDate;
- }
- function spiner(id, text = '') {
- var btn = document.getElementById(id);
- btn.innerHTML = `<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> ${text}`;
- btn.disabled = true;
- }
- function afterSpiner(id, text = null, icon = null) {
- var btn = document.getElementById(id);
- btn.innerHTML = icon !== null ? `<i class="ti ti-${icon}"></i> ${text}` : `${text}`;
- btn.disabled = false;
- }
- async function opdSelect2(selector, modal = null, multi = null) {
- try {
- const res = await fetch(`${base_url}admin_opd/list/all`);
- if (!res.ok) {
- throw new Error("500 | Internal server error");
- }
- const data = await res.json();
- const newData = data.map(item => {
- return {id: item.opdId, text: item.namaOpd}
- })
- $(selector).select2({
- data: newData,
- placeholder: 'Cari opd...',
- dropdownParent: modal !== null ? $(modal) : '',
- placeholder: 'Pilih OPD',
- minimumInputLength: 0,
- });
- } catch (error) {
- console.log(error);
- }
- }
- async function opdSelect(selectedOpdIds = null, selector, modal = null, multi = null) {
- try {
- let selected = [];
- selectedOpdIds.forEach(function (opd) {
- selected.push(opd.opd);
- });
- const res = await fetch(`${base_url}admin_opd/list/all`);
- if (!res.ok) {
- throw new Error("500 | Internal server error");
- }
- // empty select2 except "Pilih Semua"
- $(selector).empty().append('<option value="semua">Pilih Semua</option>');
- const data = await res.json();
- const newData = data.map(item => {
- return {
- id: item.opdId,
- text: item.namaOpd,
- selected: selected.includes(item.opdId),
- }
- });
- $(selector).select2({
- data: newData,
- placeholder: 'Cari opd...',
- dropdownParent: modal !== null ? $(modal) : '',
- placeholder: 'Pilih OPD',
- minimumInputLength: 0,
- });
- } catch (error) {
- console.log(error);
- }
- }
- function opdEditSelect2(selectedOpdIds, selector, page = 1) {
- $.ajax({
- url: `${base_url}admin_opd/list/${page}`,
- dataType: 'json',
- success: function (data) {
- var results = data.data.dataOpd.map(opdList => ({
- id: opdList.opdId,
- text: opdList.namaOpd
- }));
- // Select the options that match the selectedOpdIds
- selectedOpdIds.forEach(function (opdId) {
- var option = results.find(result => result.id == opdId.opd);
- if (option) {
- $(selector).append(new Option(option.text, option.id, true, true)).trigger('change');
- }
- });
- // If there are more pages, load the next one
- if ((page + 1) * 20 < data.jumlahData) {
- opdEditSelect2(page + 1);
- }
- }
- });
- }
- function buatSelect2(id, data) {
- $(id).select2({
- data: data
- });
- }
- function countDown(elementId, endTime) {
- var countDownDate = new Date(endTime).getTime();
- var x = setInterval(function () {
- var now = new Date().getTime();
- var distance = countDownDate - now;
- var days = Math.floor(distance / (1000 * 60 * 60 * 24));
- var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
- var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
- var seconds = Math.floor((distance % (1000 * 60)) / 1000);
- var countdownElement = document.getElementById(elementId);
- if (countdownElement) {
- countdownElement.innerHTML = `<span class='text-danger fw-semibold'>${days} Hari ${hours}:${minutes}:${seconds}</span>`;
- if (distance < 0) {
- clearInterval(x);
- countdownElement.innerHTML = "<span class='text-danger'>Berakhir</span>";
- }
- } else {
- console.error("Element with ID '" + elementId + "' not found.");
- }
- }, 1000);
- }
- function multipleSelect2(selector, modal = null, placeholder = "Pilih ...") {
- $(selector).select2({
- ajax: {
- url: function (params) {
- return `${base_url}admin_opd/list/${params.page || 1}/${params.term || ''}`;
- },
- dataType: 'json',
- delay: 250,
- processResults: function (data, params) {
- console.log(data);
- if (data.success == false) {
- cekLogin(data.data);
- return {
- results: [{
- id: 'placeholder',
- text: 'Data tidak ditemukan'
- }]
- };
- } else {
- params.page = params.page || 1;
- return {
- results: data.data.dataOpd.map(opdList => ({
- id: opdList.opdId,
- text: opdList.namaOpd
- })),
- pagination: {
- more: (params.page * 20) < data.data.jumlahData
- }
- };
- }
- },
- cache: true
- },
- placeholder: placeholder,
- dropdownParent: $(`#${modal}`),
- allowClear: true,
- });
- }
- function fBiasa(input) {
- var rupiahValue = input.value;
- if (rupiahValue.indexOf(',') === -1) {
- rupiahValue += ',00';
- }
- var numericValue = parseFloat(rupiahValue.replace(/[^\d,]/g, '').replace(',', '.'));
- input.value = numericValue;
- }
- function fRupiah(input) {
- var numericValue = input.value;
- var roundedValue = Math.round(numericValue);
- var rupiahFormat = new Intl.NumberFormat('id-ID', {
- style: 'currency',
- currency: 'IDR',
- minimumFractionDigits: 0,
- maximumFractionDigits: 0
- }).format(roundedValue);
- input.value = rupiahFormat;
- }
- function convertRupiah(input) {
- var numericValue = input;
- var roundedValue = Math.round(numericValue);
- var rupiahFormat = new Intl.NumberFormat('id-ID', {
- style: 'currency',
- currency: 'IDR',
- minimumFractionDigits: 0,
- maximumFractionDigits: 0
- }).format(roundedValue);
- return rupiahFormat;
- }
- function inputTable(input) {
- input.style.width = input.scrollWidth + "px"; // Set width based on scrollWidth
- }
- function rpNone(input) {
- var numericValue = input;
- var roundedValue = Math.round(numericValue);
- var formattedValue = new Intl.NumberFormat('id-ID', {
- style: 'decimal',
- minimumFractionDigits: 0,
- maximumFractionDigits: 0
- }).format(roundedValue);
- return formattedValue;
- }
- function triggerTab() {
- const event = new KeyboardEvent('keydown', {
- key: 'Tab',
- keyCode: 9,
- which: 9,
- shiftKey: false,
- ctrlKey: false,
- altKey: false,
- });
- document.activeElement.dispatchEvent(event);
- }
Add Comment
Please, Sign In to add comment