Rabu, 05 Oktober 2022

Bootstrap datepicker format setDate dd/mm/yyyy

 Saya harus mengatur tanggal di datepicker saya dalam format dd/mm/yyyy. Apa yang saya coba lakukan, dengan Javascript adalah ini:

  var year = 2014;
  var month = 5;
  var day = 10;

  var realDate = new Date(year, month - 1, day); // months are 0-based!

  $('#MainContent_txtDataConsegna').datepicker({ dateFormat: 'dd/mm/yyyy' }); // format to show
  $('#MainContent_txtDataConsegna').datepicker('setDate', realDate);

masalahnya adalah bahwa nilai di dalam datepicker saya selalu dalam format mm/hh/tttt. Dimana masalahnya??

Berikut definisi datepicker dan opsi datepicker:

   <div class="input-group date">
       <asp:TextBox runat="server" ID="txtDataOrdine" class="form-control" onBlur="CalcolaTotaliTestata('txtDataOrdine')"></asp:TextBox>
       <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i>/span>
    </div>

<script type="text/javascript">
   $('.input-group.date').datepicker({
       todayBtn: "linked",
       language: "it",
       autoclose: true,
       todayHighlight: true,
       dateFormat: 'dd/mm/yyyy' 
   });
</script>  

Perubahan

dateFormat: 'dd/mm/yyyy'

untuk

format: 'dd/mm/yyyy'

Sepertinya Anda salah membaca beberapa dokumentasi!   

sedikit perubahan format 

format: "DD/MM/YYYY"   

Mengubah ke format: 'dd/mm/yyyy' tidak berhasil untuk saya, dan mengubahnya menjadi dateFormat: 'dd/mm/yyyy' ditambahkan tahun beberapa kali, Yang terbaik untuk saya adalah, 

dateFormat: 'dd/mm/yy'    

Ada yang membingungkan ketika Anda menggunakan pemilih data, untuk bootstrap datepicker Anda harus menggunakan kode berikut: -

$( ".datepicker" ).datepicker({
   format: 'yyyy-mm-dd'
});

dan untuk datepicker jquery kode berikut harus digunakan: -

$( ".datepicker" ).datepicker({
       dateFormat: 'dd-mm-yy'
    });

Jadi, Anda harus mengetahui pemilih tanggal mana yang Anda gunakan, yang pada akhirnya menyelesaikan masalah Anda, Semoga ini membantu Anda.    

Bagi saya, saya mendapatkan masalah yang sama dengan yang saya selesaikan seperti ini. dateFormat : 'dd/mm/yy'     

bagi saya itu adalah daterangepicker bekerja dengan ini:

     $('#Host1field').daterangepicker({
                   locale: {
                            format: 'DD/MM/YYYY'
                            }
                 });    

Anda dapat menggunakan kode ini untuk datepicker bootstrap:

Kode HTML:  

<p>Date: <input type="text" id="datepicker" class="datepicker"></p>

Javascript:

$( ".datepicker" ).datepicker({
   format: 'yyyy-mm-dd'
});    

format: "DD/MM/YYYY" harus menyelesaikan masalah Anda. Jika Anda memerlukan bantuan lebih lanjut mengenai format yang tersedia, silakan kunjungi http://momentjs.com/ yang digunakan oleh kontrol ini secara internal.

Saya menghadapi masalah di mana "format" ini berfungsi dengan baik pada mesin lokal tetapi ketika saya menggunakan aplikasi di server, tanggalnya tidak bertambah dan kontrolnya kosong. ketika saya berkomentar kode format, itu mulai berfungsi tetapi kemudian saya tidak memiliki format yang saya butuhkan. Saya memperbaiki masalah itu menggunakan entri globalisasi di web.config.

<system.web>
    <globalization
    requestEncoding="utf-8"
    responseEncoding="utf-8"
    culture="en-GB"
    uiCulture="en-GB" />    
</system.web>

Ini membantu memastikan bahwa lingkungan lokal & server memiliki budaya yang sama.   

Saya memiliki beberapa masalah dengan jquery mobile 1.4.5. Misalnya sepertinya menerima perubahan format hanya lewat dari "opsi". Dan ada beberapa masalah penyegaran dengan kalender menggunakan "opsi". Untuk semua yang memiliki masalah yang sama saya dapat menyarankan kode ini:

$( "#mydatepicker" ).datepicker( "option", "dateFormat", "dd/mm/yy" );
$( "#mydatepicker" ).datepicker( "setDate", new Date());    
$('.ui-datepicker-calendar').hide();   

"Seperti halnya plugin bootstrap sendiri, datepicker menyediakan api data yang dapat digunakan untuk membuat instance datepicker tanpa perlu javascript khusus ..."

Dokumentasi DatePicker Boostrap

Mungkin Anda ingin mengatur format tanpa instance DatePicker, untuk itu, Anda harus menambahkan properti data-date-format="DateFormat" ke tag Div utama, misalnya:

<div class="input-group date" data-provide="datepicker" data-date-format="yyyy-mm-dd">
    <div class="input-group-addon">
        <span class="glyphicon glyphicon-th"></span>
    </div>

    <input type="text" name="YourName" id="YourId" class="YourClass">
</div>


sumber : https://www.pengembangan-web-mp-pd.com/id/javascript/bootstrap-datepicker-format-setdate-ddmmyyyy/1045805768/

Setel tanggal agar awalnya kosong di bootstrap-datepicker

 Saya menggunakan bootstrap-datepicker di situs saya. Datepicker akan digunakan untuk mendefinisikan filter pencarian. Saya perlu nilai awal elemen input datepicker kosong, jadi tidak akan memperkenalkan filter tanggal untuk hasil pencarian. Ketika pengguna mengklik input teks yang ditautkan ke Datepicker, kotak popup Datepicker harus memilih hari pertama bulan berikutnya.

Masalah: Jika saya menetapkan tanggal awal (seperti yang ditunjukkan di bawah), input teks akan diisi dengan tanggal hari ini yang bukan yang saya inginkan. Namun jika saya tidak menetapkan tanggal awal, datepicker akan menampilkan tahun 1970-an. Apa yang harus saya lakukan?

Mirip dengan: Demo untuk jQueryUI Datepicker

Kode JS

var now = new Date();
var nextMonth = new Date();
nextMonth.setDate(1);
nextMonth.setMonth(now.getMonth() + 1);
var prettyDate = nextMonth.getMonth() + '/' + nextMonth.getDate() + '/' + nextMonth.getFullYear();
$('#listing_filter_available').val(prettyDate);
$('#listing_filter_available').datepicker();

Kode HTML

<input type="text" id="listing_filter_available" class="input-small" placeholder="Date Available" />

Upaya Gagal

Datepicker tidak muncul saat mengklik el input teks

$(function() {

var now = new Date();
var nextMonth = new Date();
nextMonth.setDate(1);
nextMonth.setMonth(now.getMonth() + 1);
var prettyDate = nextMonth.getMonth() + '/' + nextMonth.getDate() + '/' + nextMonth.getFullYear();
$('#listing_filter_available').val(''); // clear the date filter
$('#listing_filter_available').click( function() {
$('#listing_filter_available').val(prettyDate);
$('#listing_filter_available').datepicker();
});

});
  

Saya baru saja menemukan kasus penggunaan yang sangat mirip. Dengan beberapa tweak untuk bootstrap-datepicker.js, saya yakin saya telah membuatnya berfungsi. 

Anda harus mengedit skrip di dua tempat.

Untuk bidang tanggal, saya memeriksa untuk melihat apakah tanggal (tanggal ini) ditetapkan ke tanggal mulai Unix (. Mis. Tanggal kosong). Jika demikian, keluar dan biarkan bidang itu kosong.

(baris: 95 - kira-kira)

setValue: function () {
// EDIT - Don't setValue if date = unix date start
if (DPGlobal.formatDate(this.date, this.format) == DPGlobal.formatDate(new Date(1970, 1, 1, 0, 0, 0), this.format)) return false;
// END EDIT

Untuk kalender drop-down, saya juga memeriksa untuk melihat apakah tanggal (this.date) diatur ke tanggal mulai Unix. Jika demikian, atur tanggal ke hari ini. Saya melakukan ini sehingga ketika pengguna mengklik bidang tanggal, ini menampilkan bulan saat ini sebagai lawan dari Februari 1970.

(baris: 144 - kira-kira) 

isi: function () {

// EDIT - Set date in fill to today if date is "blank" (eg Unix start date)
var d = ((DPGlobal.formatDate(this.date, this.format) == DPGlobal.formatDate(new Date(1970, 1, 1, 0, 0, 0), this.format))) ? new Date() : new Date(this.viewDate),
// original code
// var d = new Date(this.viewDate),
// END EDIT

Saya percaya hanya itu yang perlu Anda lakukan. Saya baru saja menerapkan ini dalam solusi saya, jadi jika ada yang menemukan masalah atau memiliki saran yang lebih baik, saya akan senang mendengarnya.

Ada cara yang lebih mudah untuk melakukan ini! Untuk menetapkan nilai 

$('#listing_filter_available').datepicker();
$('#listing_filter_available').datepicker('setValue', nextMonth);

Untuk menetapkan nilai kosong

$('#listing_filter_available').datepicker();
$('#listing_filter_available').val('');  

Saya bekerja dengan bootstrap v3.1.1 dan 

$('#listing_filter_available').datepicker('setValue', nextMonth);

tidak bekerja untuk saya. 

Anda harus menggunakan

$('#listing_filter_available').datepicker('setDate', nextMonth);

untuk mengisi kontrol datepicker



sumber : 

https://www.pengembangan-web-mp-pd.com/id/javascript/setel-tanggal-agar-awalnya-kosong-di-bootstrap-datepicker/1066807054/

Rabu, 14 September 2022

Cara show hide password pada Html

 Pada tutorial membuat input password html ketika kita memasukan teks akan menjadi karakter bintang (*) atau (•) tergantung browser yang kita gunakan.

kita akan mencoba cara show hide password pada html, ada beberapa cara, bisa menggunakan vanilla javascript dan jQuery.

saat mengisi formulir, ada situasi dimana kita mengetik kata sandi dan ingin melihat apa yang telah kita ketik, untuk melihatnya ada kotak centang yang membuat karakter terlihat.

Cara show hide password dengan javascript

kita akan mengimplementasikan menggunakan javascript, jadi saat mengetik akan muncul ******* dan saat klik checkbox maka akan muncul karakter : rahasia


<!DOCTYPE html>

<html>

<head>

    <title> show password dengan javascript </title>

</head>

<body>

    <p>

        klik checkbox tampilkan password untuk melihat kata sandi

    </p>

    Password: <input type="password" value="rahasia" id="inputPassword">

    <br><br>

    <input type="checkbox" onclick="myFunction()">Tampilkan Password


    <script>

        function myFunction() {

            var x = document.getElementById("inputPassword");

            if (x.type === "password") {

                x.type = "text";

            } else {

                x.type = "password";

            }

        }

    </script>

</body>

</html>


tampilan kata sandi tersembunyi atau tidak bisa dibaca :

kata sandi yang bisa dibaca :

Cara show hide password dengan jQuery

menampilkan dan menyembunyikan password menggunakan jQuery, fitur ini biasanya terdapat pada form login pada sebuah halaman web.

fitur show hide password walaupun bisa menggunakan javascript, namun lebih mudah jika kita sudah menggunakan library jQuery

kita juga menggunakan Bootstrap 5 untuk penggunaan CSS supaya lebih bagus.


sumber : https://thohirdev.com/tutorial/cara-show-hide-password-pada-html/

Senin, 08 Agustus 2022

Decrypt Enkripsi pCare v4 Dengan PHP

 BPJS kesehatan membuat sistem bridging pCare versi 4.0. Update bridging pCare sangat ditunggu-tunggu oleh developer bridging pCare SIMPUS , apalagi BPJS juga pasang target januari tahun depan web service pCare versi 3 akan dimatikan. Hal ini membuat developer SIMPUS makin bersemangat. 

Ada beberapa perubahan parameter header dan juga penambahan encript dan decript.

Enkripsi dan Kompresi String

Entah apakah memang sudah jadi roadmap BPJS atau karena kasus yang sempat muncul kemarin. Meskipun kita tidak tahu apakah datanya memang bocor dari BPJS atau bukan, yang pasti sih bukan dari web service yang dikonsumsi oleh rumah sakit, soalnya saya tidak menemukan format data seperti yang ramai di internet. 

Sebenarnya update ini sangat bagus, saya sangat mendukung. Tapi mbok ya pakai enkripsi yang bisa dibuat dengan bahasa pemrograman visual basic 6 😭. gini-gini pemakai visual basic 6 masih banyak lho!

Saya sadar, meskipun termasuk bahasa yang canggih pada masanya, visual basic 6 adalah bahasa pemrograman dari 23 tahun yang lalu. Saya tidak memaksa, hanya berharap. Kalau tidak bisa ya tidak apa-apa, kita mah nurut sama BPJS, wong nuntut juga nggak bisa, siapa elu 😆.

 AES 256 mode CBC

dimasa kini, AES 256 sudah sangat jamak digunakan dalam enkripsi. Hampir semua bahasa pemrograman modern sudah punya library atau fungsi build in, tapi tidak dengan visual basic 6. Jaman segitu enkripsi sepertinya belum populer, buktinya dosen saya tidak mengajarkan. Saat ini enkripsi data seakan sudah menjadi hal wajib dalam pertukaran data lewat internet. Chattingan whatsapp dan telegram saja dienkripsi, masak data penting nggak dienkripsi?

Lz-string

Lz-string adalah tehnik kompresi data yang dikembangkan untuk javascript. dengan lz-string, data menjadi lebih kecil dan bisa disimpan di local storage berkapasitas kecil tanpa khawatir storagenya meledak. Contoh penerapannya adalah di aplikasi untuk perangkat mobile (handphone).

Contekan Dari IT BPJS

Sebenarnya IT BPJS sudah memberikan contoh beberapa bahasa pemrograman yang bisa langsung kita salin. Supaya sesuai dengan judul, saya mencontohkan kodingan yang saya dapat dari aplikasi trust-mark BPJS Kesehatan. Aplikasi trust-mark adalah aplikasi katalog web service dari BPJS. Berikut ini kodingnya:

<?php 
        require_once 'vendor/autoload.php';
    
        /* function decrypt dan kompresi dijadikan satu */       
        function stringDecrypt($key, $string)
	{

		$encrypt_method = 'AES-256-CBC';
		// hash
		$key_hash = hex2bin(hash('sha256', $key));
		// iv - encrypt method AES-256-CBC expects 16 bytes - else you will get a warning        
		$iv = substr(hex2bin(hash('sha256', $key)), 0, 16);
		$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key_hash, OPENSSL_RAW_DATA, $iv);
		return \LZCompressor\LZString::decompressFromEncodedURIComponent($output);
	}
?>

Alhamdulilah ya, tim IT BPJS baik sekali, kita tidak perlu bersusah payah mencari kodingannya. Tapi kok nggak ada yang visual basic 6 sih pak? hahaha ngarep lagi nih 😓. 

Setelah di salin, coba jalankan aplikasinya! Dan, deng dong keluar error ya? kalau nggak keluar error berarti sakti. Soalnya librarynya kan belum diinstall. 

Install Library LZ-String

untuk menginstall library lz-string, kita harus menginstall composer terlebih dahulu. Sebenarnya tanpa composer juga bisa, tetapi lebih ribet. Selain itu seorang murid itu harus taat pada gurunya. Karena itu saya mengikuti cara yang ada ditutorial, meskipun tidak dijelaskan secara eksplisit, melihat ada folder vendor, saya menduga bahwa tim IT BPJS menggunakan compresor, eh composer. 

Cara menginstall lz-string dengan composer sangat mudah. Saya menggunakan teks editor visual code yang sangat membantu sekali, soalnya disitu kita bisa mengakses command prompt secara langsung. Fitur ini bernama "terminal", seperti nama command prompt di linux ya, saya jadi merasa keren.

buka terminal di visual code, lalu masukkan perintah dibawah ini kemudian tekan enter:

composer require nullpunkt/lz-string-php

tunggu beberapa saat sampai prosesnya selesai. Setelah itu akan kita dapati folder vendor, file composer.json dan  composer.lock.

 

file dec.php bukan dari composer ya. file dec.php adalah file php buatan saya yang berisi salinan source code contoh dari BPJS.

Key Dekripsi dan Respon terenkripsi

AES 256 menggunakan key untuk proses enkripsi dan dekripsinya. Key yang digunakan adalah perpaduan dari "consid + conspwd + timestamp request (concatenate string)". Bingung nggak? nggak usah bingung, cara bikinnya gampang kok, kalau di bahasa pemrograman PHP hanya seperti ini:

$key = cons_id.secretkey.stimeStamp;

note: respon yang didecrypt hanya respon yang dienkripsi saja. Jangan memasukkan semua respon ke decryptor. Kemudian copy pesan dari awal sampai akhir (biasanya ditandai dengan "==") .

Sekarang balik lagi ke contoh source code dari IT BPJS diatas, perhatikan baris kelima yang berisi:

function stringDecrypt($key, $string){

$key adalah kunci dekripsi seperti yang saya tulis diatas, sedangkan string adalah respon dari web service BPJS yang akan didekripsi.

Proses Dekripsi dan Dekompresi

Untuk menjadikan respon dari web service Vclaim menjadi sesuatu yang bisa kita baca adalah dengan mendekrypt dan dekompresi. Ada beberapa teman pernah curhat, sudah mengikuti petuah dari BPJS kok masih gagal mendecrypt datanya.

Sebenarnya dia sudah berhasil mendecrypt data, tetapi dia melupakan satu hal. Selain didecrypt, data tersebut harus didekompres. 

Fungsi decrypt ada di baris ke-5, sedangkan fungsi dekompresi ada di baris 23. maka urutannya adalah :

1. Decrypt response web service Vclaim dengan key yang kita punya.

2. Dekompresi 

Kesimpulan

Sebenarnya cara mendecrypt dan dekompresi data dari bridging pCare v.4 bisa dilakukan dengan mudah. Asalkan telaten dan sabar dalam proses. Semoga berhasil...

sumber :

https://www.martinsetiawan.com/2021/11/decrypt-enkripsi-vclaim-v2-dengan-php.html

Jumat, 03 Juni 2022

Cara mengatasi getallheaders yang tidak berfungsi

Pada kesempatan kali ini penulis ingin berbagi pengalaman terkait proses membuat webservice yang menyertakan parameter header. semisal x-username, x-token maupun x-password.

pada versi php 5.3 kebawah fungsi getallheaders() bisa dijalankan, tetapi jika menggunakan php versi 5.4 keatas fungsi tersebut tidak bisa berjalan.

untuk menangani masalah tersebut, silahkan menambahkan fungsi baru (terserah nama fungsinya), untuk kemudian fungsi tersebut dipanggil untuk mengambil parameter header yang disertakan.

function getallheaderss() {
    $headers = array();
    foreach($_SERVER as $key => $value) {
        if (substr($key, 0, 5) <> 'HTTP_') {
            continue;
        }
        $header = str_replace(' ', '-', ucwords(str_replace('_', ' ',
        strtolower(substr($key, 5)))));
        $headers[$header] = $value;
    }
    return $headers;
}

pada contoh diatas, penulis membuat fungsi dengan nama getallheaderss.

kemudian pada proses selanjutnya adalah memanggil fungsi tersebut untuk mengambil parameter header.

$headers=getallheaderss();
$xusername=$headers['X-Username'];
$xpassword=$headers['X-Password'];

paramaeter header disimpan dengan nama variabel untuk kemudian di gunakan pada proses pengembangan webservice.

demikian pengalaman yang penulis, semoga bermanfaat..

sumber : https://stackoverflow.com/questions/541430/how-do-i-read-any-request-header-in-php




Concat tidak berfungsi untuk indexing

 $sql = "SELECT a.* , CONCAT(a.Kode_Barang,'<br><b>',b.Nm_Aset5,'</b>') as Nm_Aset5, CONCAT(a.latitud...