Greasy Fork is available in English.
Zapamiętuje w local storage najniższe ceny gier z listy życzeń i pokazuje je obok aktualnie najniższej ceny. Jeśli aktualna cena jest mniejsza od dotychczas zapisanej, wtedy tytuł oznaczany jest na zielono, jeśli cena jest równa naniższej - na niebiesko.
当前为
this.$ = this.jQuery = jQuery.noConflict(true);
// ==UserScript==
// @name Bazar minimalne ceny
// @namespace http://tampermonkey.net/
// @version 0.7.0
// @description Zapamiętuje w local storage najniższe ceny gier z listy życzeń i pokazuje je obok aktualnie najniższej ceny. Jeśli aktualna cena jest mniejsza od dotychczas zapisanej, wtedy tytuł oznaczany jest na zielono, jeśli cena jest równa naniższej - na niebiesko.
// @author nochalon
// @match https://bazar.lowcygier.pl/
// @match https://bazar.lowcygier.pl/?*
// @icon https://bazar.lowcygier.pl/favicon.ico
// @require http://greasyfork.icu/scripts/34527-gmcommonapi-js/code/GMCommonAPIjs.js?version=751210
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jquery-timeago/1.5.4/jquery.timeago.min.js
// ==/UserScript==
(function() {
'use strict';
GMC.registerMenuCommand('Usuń całą historię', () => {
if (confirm(
"Aktualnie zapisanych jest " + localStorage.length + " tytułów. Czy chcesz je wszystkie usunąć?")) {
localStorage.clear();
}
});
GMC.registerMenuCommand('Usuń historię tytułu', () => {
var title = prompt(
"Podaj tytuł gry której historię chcesz usunąć");
if (title != null) {
if (!removeFromLocalStorage(title)) {
alert("Nie znaleziono tytułu o nazwie: " + title);
}
}
});
var ths = document.querySelectorAll(".row.game-list.wishlist-item");
console.log("Local storage contains " + localStorage.length + " items");
for (var i = 0; i < ths.length; i++) {
var titleElem = ths[i].querySelector(".media-heading > a");
var title = titleElem.innerHTML;
var priceElem = ths[i].querySelector(".pc > p.prc");
var price = priceElem.innerHTML;
var priceFloat = parseFloat(price.replace(',', '.'));
var inStorage = JSON.parse(localStorage.getItem(title));
if (inStorage === null || inStorage.price > priceFloat) {
console.log("Replacing " + title + " " + inStorage + " with " + priceFloat);
saveToLocalStorage(title, priceFloat);
if (inStorage === null) continue;
}
var diff = inStorage.price - priceFloat;
if (diff > 0) {
titleElem.style.color = '#00E000';
priceElem.style.color = '#00E000';
appendStoredPrice(inStorage.price, diff, priceElem.parentNode);
} else if (diff < 0) {
appendStoredPrice(inStorage.price, diff, priceElem.parentNode);
appendTime(inStorage.timestamp, priceElem.parentNode);
} else {
titleElem.style.color = '#0000E0';
priceElem.style.color = '#0000E0';
appendTime(inStorage.timestamp, priceElem.parentNode);
}
}
})();
function appendTime(timeVal, elem) {
var time = document.createElement("time");
var timeString = new Date(timeVal);
time.innerHTML = timeString.toLocaleString();
time.dateTime = timeString.toISOString();
time.classList = "timeago";
elem.appendChild(time);
jQuery(time).timeago();
}
function appendStoredPrice(price, diff, elem) {
var priceElem = document.createElement("p");
var val = diff/price*100.0;
priceElem.innerHTML = "" + parseFloat(price).toFixed(2) + "zł (" + (val > 0.0 ? "+" : "") + val.toFixed(2) + "%)";
elem.appendChild(priceElem);
}
function saveToLocalStorage(title, price) {
var newItem = {'price': price, 'timestamp': Date.now()};
localStorage.setItem(title, JSON.stringify(newItem));
}
function removeFromLocalStorage(key) {
var keyLowerCase = key.toLowerCase();
for (var a in localStorage) {
if (a.toLowerCase() === keyLowerCase) {
localStorage.removeItem(a);
return true;
}
}
return false;
}