Last active
March 22, 2020 14:35
-
-
Save jacenko/a9b7ff278ffa93e078d44276e103ca3e to your computer and use it in GitHub Desktop.
Amazon SellerCentral Facelift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Amazon SellerCentral Facelift | |
// @namespace http://tampermonkey.net/ | |
// @version 0.6a | |
// @description Shows additional sales data on the SellerCentral homepage. Use at your own risk. | |
// @author Deniss Jacenko | |
// @match https://sellercentral.amazon.com/gp/homepage.html/* | |
// @match https://sellercentral.amazon.com/home | |
// @match https://sellercentral.amazon.com/cm/* | |
// @match https://sellercentral.amazon.com/sspa/* | |
// @grant none | |
// @require http://code.jquery.com/jquery-3.4.1.min.js | |
// ==/UserScript== | |
(function() { | |
var current_url = window.location.href; | |
if (current_url.indexOf('//sellercentral.amazon.com/gp/homepage.html') > 0 || current_url.indexOf('//sellercentral.amazon.com/home') > 0) { | |
Number.prototype.toLocaleFixed = function(n) { | |
return this.toLocaleString(undefined, { | |
minimumFractionDigits: n, | |
maximumFractionDigits: n | |
}); | |
}; | |
function toNum(stringNum) { | |
return stringNum.replace(/\$|,/g,''); | |
} | |
function getPercentageChange(oldNumber, newNumber){ | |
var decreaseValue = toNum(oldNumber) - toNum(newNumber); | |
return (Math.round((decreaseValue / toNum(oldNumber)) * 100) * -1); | |
} | |
var salesArray = []; | |
$("#sales-summary-table tbody tr td span").each(function(index) { | |
if ($(this).text() != "Ordered product sales" && $(this).text() != "Units") { | |
var number = toNum($(this).text()); | |
salesArray.push(number); | |
} | |
}); | |
var dollarsToday = salesArray[0]; | |
var unitsToday = salesArray[1]; | |
var dollars7Days = salesArray[2]; | |
var units7Days = salesArray[3]; | |
var dollars15Days = salesArray[4]; | |
var units15Days = salesArray[5]; | |
var dollars30Days = salesArray[6]; | |
var units30Days = salesArray[7]; | |
var estYearDollarsToday = "$"+(dollarsToday*365.25).toLocaleFixed(2); | |
var estYearDollars7Days = "$"+(dollars7Days/7*365.25).toLocaleFixed(2); | |
var estYearDollars15Days = "$"+(dollars15Days/15*365.25).toLocaleFixed(2); | |
var estYearDollars30Days = "$"+(dollars30Days/30*365.25).toLocaleFixed(2); | |
var avgDayDollarsToday = "$"+(dollarsToday/1).toLocaleFixed(2); | |
var avgDayDollars7Days = "$"+(dollars7Days/7).toLocaleFixed(2); | |
var avgDayDollars15Days = "$"+(dollars15Days/15).toLocaleFixed(2); | |
var avgDayDollars30Days = "$"+(dollars30Days/30).toLocaleFixed(2); | |
var estYearUnitsToday = (unitsToday*365.25).toLocaleFixed(0); | |
var estYearUnits7Days = (units7Days/7*365.25).toLocaleFixed(0); | |
var estYearUnits15Days = (units15Days/15*365.25).toLocaleFixed(0); | |
var estYearUnits30Days = (units30Days/30*365.25).toLocaleFixed(0); | |
var avgDayUnitsToday = (unitsToday/1).toLocaleFixed(1); | |
var avgDayUnits7Days = (units7Days/7).toLocaleFixed(1); | |
var avgDayUnits15Days = (units15Days/15).toLocaleFixed(1); | |
var avgDayUnits30Days = (units30Days/30).toLocaleFixed(1); | |
var fifteenDayChange = getPercentageChange(estYearDollars30Days, estYearDollars15Days); | |
var sevenDayChange = getPercentageChange(estYearDollars15Days, estYearDollars7Days); | |
var todayChange = getPercentageChange(estYearDollars7Days, estYearDollarsToday); | |
var salesPercentChanges = ["", todayChange, sevenDayChange, fifteenDayChange, ""]; | |
var estSalesArray = []; | |
estSalesArray.push("Estimated yearly sales", estYearDollarsToday, estYearDollars7Days, estYearDollars15Days, estYearDollars30Days); | |
var estUnitsArray = []; | |
estUnitsArray.push("Estimated yearly units", estYearUnitsToday, estYearUnits7Days, estYearUnits15Days, estYearUnits30Days); | |
var avgDollarsArray = []; | |
avgDollarsArray.push("Average daily sales", avgDayDollarsToday, avgDayDollars7Days, avgDayDollars15Days, avgDayDollars30Days); | |
var avgUnitsArray = []; | |
avgUnitsArray.push("Average daily units", avgDayUnitsToday, avgDayUnits7Days, avgDayUnits15Days, avgDayUnits30Days); | |
$("#sales-summary-table tbody tr").each(function(index) { | |
if (index) { | |
var salesPercentColor = "default"; | |
var salesPercentSign = ""; | |
var salesPercentPlus = ""; | |
var arrowSign = ""; | |
if (salesPercentChanges[index]) { | |
salesPercentPlus = salesPercentChanges[index] > 0 ? "+" : ""; | |
salesPercentColor = salesPercentChanges[index] >= 0 ? "green" : "red"; | |
salesPercentColor = salesPercentChanges[index] == 0 ? "default" : salesPercentColor; | |
salesPercentSign = "%"; | |
arrowSign = "⤵"; | |
} | |
$(this).append('<td class="a-text-right"><span class="a-text-bold">'+estSalesArray[index]+'</span><strong class="a-percent-change a-percent-'+salesPercentColor+'"><span class="a-arrow">'+arrowSign+'</span> '+salesPercentPlus+salesPercentChanges[index]+salesPercentSign+'</strong></td>'); | |
$(this).append('<td class="a-text-right"><span class="a-text-bold">'+estUnitsArray[index]+'</span></td>'); | |
$(this).append('<td class="a-text-right"><span class="a-text-bold">'+avgDollarsArray[index]+'</span></td>'); | |
$(this).append('<td class="a-text-right"><span class="a-text-bold">'+avgUnitsArray[index]+'</span></td>'); | |
} else { | |
$(this).append('<td class="a-text-right"><span class="a-color-secondary">'+estSalesArray[index]+'</span></td>'); | |
$(this).append('<td class="a-text-right"><span class="a-color-secondary">'+estUnitsArray[index]+'</span></td>'); | |
$(this).append('<td class="a-text-right"><span class="a-color-secondary">'+avgDollarsArray[index]+'</span></td>'); | |
$(this).append('<td class="a-text-right"><span class="a-color-secondary">'+avgUnitsArray[index]+'</span></td>'); | |
} | |
}); | |
$("#gw-sentry, #widget-fnFbrJ, #widget-fotzTi, #widget-fqDNwk").remove(); | |
$(".gw-right-col").css("width", "74.75%"); | |
$("table.a-keyvalue td, table.a-keyvalue th").css("border", "none"); | |
$("table.a-keyvalue td, table.a-keyvalue th").css("padding", "8px 14px 7px"); | |
$("#sales-summary-table tbody tr:odd").css("background-color", "#F6F6F6"); | |
$("#sales-summary-table tbody th").css("padding-left", "6px"); | |
$("#sales-summary-table tbody th").css("min-width", "4em"); | |
$("#sales-summary-table tbody th").css("padding-right", "0"); | |
$(".a-section.sc-widget-content").css("padding-right", "14px"); | |
$(".a-text-right").attr("style", "position:relative;overflow:inherit;border:none;"); | |
$(".gw-cols").attr("style", "max-width: 85em;margin:0 auto;"); | |
$(".a-percent-change").attr("style", "position:absolute;font-size:.5em;bottom:-11px;right:12px;padding:0px 4px;border-radius:9px;background-color:rgba(255,255,255,.5);"); | |
$(".a-box:not(#paymentsPageLink)").attr("style", "border-radius:5px !important;border:none;"); | |
$("<style type='text/css'> \ | |
.a-percent-red{ color:rgba(192, 57, 43,0.9); } \ | |
.a-percent-green{ color:rgba(77,175,124,0.9); } \ | |
.a-percent-default{ color:rgba(0,0,0,0.9); } \ | |
.a-arrow{ color: #333; display: inline-block; transform: rotate(-135deg); font-size: 1.5em; }</style>").appendTo("head"); | |
$("#widget-fmTsLK").insertBefore( $("#widget-fxZAQm") ); | |
$("#widget-foOBvR").insertAfter( $("#widget-fti8vf") ); | |
$("title").text("🏠 "+avgDayDollarsToday+"/"+unitsToday+" units today"); | |
} else if (current_url.indexOf('//sellercentral.amazon.com/cm') || current_url.indexOf('//sellercentral.amazon.com/sspa')) { | |
$("title").text("Campaign Manager"); | |
} | |
var approxTimeToRefresh = 1000*60*30; | |
var timeToRefresh = Math.floor(Math.random() * (approxTimeToRefresh*3 - approxTimeToRefresh*.5) ) + approxTimeToRefresh*.5; | |
setTimeout(function(){ location.reload(); }, timeToRefresh); | |
})(); |
Author
jacenko
commented
Jul 29, 2019
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment