Mercurial > titip
comparison index.html @ 4:3be5d1679ce0
Add bni, rewrite javascript
| author | nanaya <me@myconan.net> |
|---|---|
| date | Thu, 19 Nov 2015 02:19:03 +0900 |
| parents | 9e5f60aae01c |
| children | c1086c23ef29 |
comparison
equal
deleted
inserted
replaced
| 3:78658abbb431 | 4:3be5d1679ce0 |
|---|---|
| 54 <li> | 54 <li> |
| 55 Bank transfer: | 55 Bank transfer: |
| 56 <span id="result-bank"></span> IDR | 56 <span id="result-bank"></span> IDR |
| 57 (<span id="rate-text"></span> IDR/JPY) | 57 (<span id="rate-text"></span> IDR/JPY) |
| 58 </li> | 58 </li> |
| 59 | |
| 60 <li> | |
| 61 Bank transfer (alt): | |
| 62 <span id="result-bank-bni"></span> IDR | |
| 63 (<span id="rate-text-bni"></span> IDR/JPY) | |
| 64 </li> | |
| 65 | |
| 59 <li> | 66 <li> |
| 60 PayPal: | 67 PayPal: |
| 61 <span id="result-paypal"></span> JPY | 68 <span id="result-paypal"></span> JPY |
| 62 </li> | 69 </li> |
| 63 </ul> | 70 </ul> |
| 72 <li>Berhubung sudah punya timbangan, ongkir (estimasi) bisa dihitung sebelum dikirim.</li> | 79 <li>Berhubung sudah punya timbangan, ongkir (estimasi) bisa dihitung sebelum dikirim.</li> |
| 73 <li><a href="http://www.post.japanpost.jp/int/charge/list/ems1_en.html">Tabel ongkir EMS</a>.</li> | 80 <li><a href="http://www.post.japanpost.jp/int/charge/list/ems1_en.html">Tabel ongkir EMS</a>.</li> |
| 74 <li>Perhitungan: | 81 <li>Perhitungan: |
| 75 <ul> | 82 <ul> |
| 76 <li>Bank: <code>jumlah × 1.07 × nilai_tukar</code>, dibulatkan ke seribuan terdekat.</li> | 83 <li>Bank: <code>jumlah × 1.07 × nilai_tukar</code>, dibulatkan ke seribuan terdekat.</li> |
| 84 <li>Bank (alt): <code>jumlah × 1.01 × nilai_tukar + 25000</code>, dibulatkan ke seribuan terdekat.</li> | |
| 77 <li>PayPal: <code>jumlah × 1.05</code>, dibulatkan ke satuan terdekat.</li> | 85 <li>PayPal: <code>jumlah × 1.05</code>, dibulatkan ke satuan terdekat.</li> |
| 78 </ul> | 86 </ul> |
| 79 </li> | 87 </li> |
| 80 <li>Jangan lupa memastikan jumlah setelah pajak dan ongkir (lokal).</li> | 88 <li>Jangan lupa memastikan jumlah setelah pajak dan ongkir (lokal).</li> |
| 81 <li>Data nilai tukar didapat dari layanan <a href="http://fixer.io/">Fixer.io</a>.</li> | 89 <li>Data nilai tukar didapat dari layanan <a href="http://fixer.io/">Fixer.io</a>.</li> |
| 82 </ul> | 90 </ul> |
| 83 </div> | 91 </div> |
| 84 | 92 |
| 85 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> | 93 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> |
| 86 <script> | 94 <script> |
| 87 // best javascript ahead. Proceed with care. | 95 var input = function() { return parseFloat($xForm.val()); } |
| 88 var | |
| 89 displayResult = function(x, rate) { | |
| 90 $("#rate-text").text(rate.toLocaleString()) | |
| 91 $("#result-bank").text((Math.round(x * 1.07 * rate / 1000) * 1000).toLocaleString()) | |
| 92 $("#result-paypal").text((Math.round(x * 1.05)).toLocaleString()) | |
| 93 $("#ok").show() | |
| 94 }, | |
| 95 loading = $("#loading"), | |
| 96 doButton = $("button[type=submit]"), | |
| 97 clearButton = $("button[type=reset]"), | |
| 98 unlock = function() { | |
| 99 loading.hide() | |
| 100 doButton.attr("disabled", false) | |
| 101 }, | |
| 102 lock = function() { | |
| 103 loading.show() | |
| 104 doButton.attr("disabled", true) | |
| 105 }, | |
| 106 xForm = $("#x"), | |
| 107 action = function(e) { | |
| 108 e.preventDefault() | |
| 109 $(".js").hide() | |
| 110 var x = parseFloat(xForm.val()) | |
| 111 if (x === NaN || x === undefined) { return false; } | |
| 112 | 96 |
| 113 if (window.rate === undefined) { | 97 var $loading = $("#loading"); |
| 114 lock() | 98 var $doButton = $("button[type=submit]"); |
| 115 $.getJSON("https://api.fixer.io/latest", { base: "JPY", symbols: "IDR" }) | 99 var $xForm = $("#x"); |
| 116 .done(function(data) { | 100 |
| 117 window.rate = data.rates["IDR"] | 101 var locks = {}; |
| 118 displayResult(x, window.rate) | 102 var lock = function(isLoading) { |
| 119 }) | 103 if (!isLoading && locks.fixer === true && locks.bni === true) { return; } |
| 120 .fail(function() { | 104 $loading.toggle(isLoading); |
| 121 $("#error").show() | 105 $doButton.attr("disabled", isLoading); |
| 122 }) | 106 }; |
| 123 .always(function() { | 107 |
| 124 unlock() | 108 var rates = {}; |
| 125 }) | 109 |
| 126 } else { | 110 var displayResult = function() { |
| 127 displayResult(x, window.rate) | 111 if (rates.fixer === undefined || rates.bni === undefined) { return; } |
| 128 } | 112 var x = input(); |
| 129 } | 113 |
| 130 clearButton.click(function(e) { xForm.focus() }) | 114 $("#rate-text").text(rates.fixer.toLocaleString()); |
| 131 doButton.click(action) | 115 $("#result-bank").text((Math.round(x * 1.07 * rates.fixer / 1000) * 1000).toLocaleString()); |
| 116 | |
| 117 if (rates.bni !== 0) { | |
| 118 $("#rate-text-bni").text(rates.bni.toLocaleString()); | |
| 119 $("#result-bank-bni").text((Math.ceil(x * 1.01 * rates.bni / 1000) * 1000 + 25000).toLocaleString()); | |
| 120 } else { | |
| 121 $("#rate-text-bni").text('x'); | |
| 122 $("#result-bank-bni").text('x'); | |
| 123 }; | |
| 124 | |
| 125 $("#result-paypal").text((Math.round(x * 1.05)).toLocaleString()); | |
| 126 $("#ok").show(); | |
| 127 lock(false); | |
| 128 }; | |
| 129 | |
| 130 var action = function(e) { | |
| 131 e.preventDefault() | |
| 132 $(".js").hide() | |
| 133 | |
| 134 var x = input(); | |
| 135 | |
| 136 if (x === NaN || x === undefined) { return false; }; | |
| 137 | |
| 138 if (rates.fixer === undefined) { | |
| 139 lock(true); | |
| 140 locks.fixer = true; | |
| 141 | |
| 142 $.getJSON("https://api.fixer.io/latest", { base: "JPY", symbols: "IDR" }) | |
| 143 .done(function(data) { | |
| 144 rates.fixer = parseFloat(data.rates["IDR"]); | |
| 145 | |
| 146 displayResult(); | |
| 147 }) | |
| 148 .fail(function() { | |
| 149 $("#error").show(); | |
| 150 }) | |
| 151 .always(function() { | |
| 152 locks.fixer = false; | |
| 153 lock(false); | |
| 154 }); | |
| 155 }; | |
| 156 | |
| 157 if (rates.bni === undefined) { | |
| 158 lock(true); | |
| 159 locks.bni = true; | |
| 160 | |
| 161 $.get("bni-jpyidr.txt") | |
| 162 .done(function(data) { | |
| 163 if (data === "") { | |
| 164 rates.bni = 0; | |
| 165 } else { | |
| 166 rates.bni = parseFloat(data); | |
| 167 } | |
| 168 | |
| 169 displayResult(); | |
| 170 }) | |
| 171 .fail(function() { | |
| 172 $("#error").show(); | |
| 173 }) | |
| 174 .always(function() { | |
| 175 locks.bni = false; | |
| 176 lock(false); | |
| 177 }); | |
| 178 }; | |
| 179 | |
| 180 displayResult(); | |
| 181 }; | |
| 182 | |
| 132 $("form").submit(action) | 183 $("form").submit(action) |
| 184 $("button[type=reset]").click(function(e) { xForm.focus(); }); | |
| 133 </script> | 185 </script> |
| 134 </body> | 186 </body> |
