您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
spicing up the soylent
- // ==UserScript==
- // @name Soylent Stuff
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description spicing up the soylent
- // @author You
- // @match http*://diy.soylent.com/recipes/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- // add function to format currency
- Number.prototype.formatMoney = function(c, d, t){
- c = isNaN(c = Math.abs(c)) ? 2 : c;
- d = d === undefined ? "." : d;
- t = t === undefined ? "," : t;
- var n = this,
- s = n < 0 ? "-" : "",
- i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
- j = (j = i.length) > 3 ? j % 3 : 0;
- return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
- };
- // modify scaling selector
- $('.amount-selector').attr("id","select");
- for (var week = 5; week<=52;week++){
- $('#select').append($("<option></option>").attr("value",week * 7).text(week + " weeks"));
- }
- // target total row
- $('table.ingredients > tbody:nth-child(3) > tr').attr("id","total-row");
- // change daily cost label
- $('#total-row > td:nth-child(1) > div:nth-child(2)').text('Total Cost');
- // add data-daily to total cost
- $('#total-row > td:nth-child(2)').attr("id","cost");
- $('#cost').attr("data-daily",$('#cost').text().replace("$", ""));
- // add data-daily to table
- $('table.ingredients > tbody:first() > tr > td:nth-child(4)').each(function (index,element) {$(element).addClass("cost");$(element).attr("data-daily",$(element).text().replace("$",""));});
- $('#select').on("change",function () {
- $('[data-daily]').each(function(index){$(this).text("$" + Number.parseFloat($(this).attr("data-daily") * $('#select').val()).formatMoney("."));});
- });
- var amountNodes = $("[data-amount]");
- var MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
- var amountObserver = new MutationObserver (amountHandler);
- var amountConfig = { childList: true, characterData: true, attributes: true, subtree: true };
- //--- Add a target node to the observer. Can only add one node at a time.
- amountNodes.each ( function () {
- //console.log($(this));
- amountObserver.observe (this, amountConfig);
- } );
- var factor = 1;
- function amountHandler (mutationRecords) {
- //console.info ("amountHandler:");
- mutationRecords.forEach ( function (mutation) {
- // debugger;
- // console.log (mutation.type);
- //debugger
- var amount = mutation.addedNodes[0].parentElement;
- var cost = $(amount.parentElement).find("td.cost");
- var newFactor = $(amount).text()/$(amount).attr("data-amount");
- if (factor==1) {factor = newFactor;}
- console.log(factor);
- var newCost = $(cost).attr("data-daily")*factor;
- cost.text("$"+newCost.formatMoney("."));
- if (typeof mutation.removedNodes == "object") {
- var jq = $(mutation.removedNodes);
- //console.log (jq);
- //console.log (jq.is("span.myclass2"));
- //console.log (jq.find("span") );
- }
- } );
- factor = 1;
- }
- })();