您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
[FR] affiche le total des entrées sorties sur la page de mouvement des comptes(fonctionne avec la nouvelle interface 01/2016)
当前为
// ==UserScript== // @name ajout-Bilan-Entrees-Sorties // @version 0.5 // @namespace nil // @author nil // @grant none // @description [FR] affiche le total des entrées sorties sur la page de mouvement des comptes(fonctionne avec la nouvelle interface 01/2016) // @include https://clients.boursorama.com/compte/cav/*/mouvements // @include https://clients.boursorama.com/compte/cav/*/mouvements?* // ==/UserScript== function showInAndOut() { function formatNumberToPrettyDecimal(num) { // at least 3 characters (pad with 0) num_str = num.toString().replace(/^[+-]?/, '$&000'); // make it decimal (:100), and remove unnecessary leading zero num_str = num_str.replace(/\d\d$/, ',$&').replace(/^([+-]?)0{1,3}([^,])/, '$1$2'); // space it a little bit num_str = num_str.replace(/(\d)(\d\d\d),/, '$1 $2,'); // prefix it with a + if not negative num_str = num_str.replace(/^[^-]/, '+$&'); return num_str; } var totalIN = 0, totalOUT = 0; var nbIN = 0, nbOUT = 0; var collection = document.getElementsByClassName("list__movement__line--amount"); if (0 === collection.length) { console.log("Err1: Userscript showInAndOut probably needs to be updated"); return; } for (var elt, i=0; elt = collection.item(i); i++) { // remove coma (like doing * 100) amount = parseFloat(elt.textContent.replace(/\s+€?/g, '').replace(',', '')); if(amount >= 0) { totalIN += amount; nbIN++; } else { totalOUT += amount; nbOUT++; } } var str_movements = "in: " + totalIN + " €, out: " + totalOUT + " €"; var ul = null; collection = document.getElementsByClassName("summary__numbers"); for (var elt, i=0; elt = collection.item(i); i++) { if (elt.tagName.toLowerCase() !== "ul") continue; ul = elt; break; } if (null === ul) { alert("Err2: ul.summary__numbers not found\n\n"+str_movements); return; } var fromDate = document.getElementById("movementSearch_fromDate").value; var toDate = document.getElementById("movementSearch_toDate").value; var period = fromDate + " au " + toDate; var ul_cp = ul.cloneNode(false); ul_cp.className += " showInAndOut"; var resulting_movement = totalIN + totalOUT; var resulting_movement_str = formatNumberToPrettyDecimal(resulting_movement); var totalIN_str = formatNumberToPrettyDecimal(totalIN); var totalOUT_str = formatNumberToPrettyDecimal(totalOUT); var ul_innerHTML = "<li class='summary__number " + (resulting_movement >= 0.0 ? "positive" : "negative") + "'>"; ul_innerHTML += "<h4 class='summary__title'>Mouvement résultant sur la période<br> du " + period + "</h4><h3 class='summary__value'>"+ resulting_movement_str + " <sup>€</sup></h3></li>"; ul_innerHTML += "<li class='summary__number positive'><h4 class='summary__title'>Total des " + nbIN + " entrées</h4><h3 class='summary__value'>" + totalIN_str + " <sup>€</sup></h3></li>"; ul_innerHTML += "<li class='summary__number negative'><h4 class='summary__title'>Total des " + nbOUT + " sorties</h4><h3 class='summary__value'>" + totalOUT_str + " <sup>€</sup></h3></li>"; ul_cp.innerHTML = ul_innerHTML; ul.parentNode.insertBefore(ul_cp, ul.nextSibling); } document.addEventListener('DOMContentLoaded', showInAndOut);