// ==UserScript==
// @name Bricklink Tweaks
// @namespace https://github.com/ksuquix/userscript-tweaks
// @version 0.1.74
// @description Add tweaks / features to bricklink
// @include https://www.bricklink.com/*
// @require http://code.jquery.com/jquery-1.10.2.min.js
// @run-at document-end
// ==/UserScript==
// Chrome extensions are sandboxed. This lets me use jQuery from Console
// $('title').after('');
// (bricklink seems to include jquery now)
// add functions we want both inside and outside the sandbox
//$('title').after('');
var oHead = document.getElementsByTagName('HEAD').item(0);
var oScript= document.createElement("script");
oScript.type = "text/javascript";
oScript.src="https://rawgit.com/ksuquix/userscript-tweaks/master/bricklink-subinclude.js";
oHead.appendChild( oScript);
$.extend({
getUrlVars: function(){
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
},
getUrlVar: function(name){
return $.getUrlVars()[name];
}
});
// On Part catalog entry, add an "(Add)" link next to price guide that goes into inventory add dialog with
// part and color set
if(window.location.pathname.indexOf('catalogItem.asp')>0 || window.location.pathname.indexOf('catalogItemInv.asp')>0 || window.location.pathname.indexOf('catalogList.asp')>0) {
$('a[href*=catalogPG\\.asp\\?]').each(function() {
url = $(this).attr('href').
replace(/catalogPG.asp\?P=/,'inventory_add.asp?a=p&itemID=').
replace(/catalogPG.asp\?M=/,'inventory_add.asp?a=m&itemID=').
replace(/colorID=/,'p_color=');
$(this).after(' (Add)');
});
$('a[href*=catalogItemInv\\.asp\\?S]').each(function() {
url = $(this).attr('href').
replace(/catalogItemInv.asp\?S=/,'inventory_add.asp?a=s&itemID=').
replace(/colorID=/,'p_color=');
$(this).after(' - Add');
});
$('a[href*=catalogItem\\.asp\\?P]').each(function() {
url = $(this).attr('href').
replace(/catalogItem.asp\?P=/,'inventory_add.asp?a=p&itemID=').
replace(/colorID=/,'p_color=');
burl = $(this).attr('href').
replace(/.*P=/,'http://www.basebrick.com/parts.php?partnumber=').
replace(/colorID=\d*/,'');
burlu = $(this).attr('href').
replace(/.*P=/,'http://www.basebrick.com/listdata2.php?userid=1228&partnumber=').
replace(/colorID=\d*/,'');
$(this).after(' (Add) (BB) (BBu)');
if($.getUrlVar('colorPart')) {
burluc = $(this).attr('href').
replace(/.*P=/,'inventory_add.asp?a=p&itemID=').
replace(/colorID=\d*/,'')+'&p_color='+$.getUrlVar('colorPart');
$(this).after(' (AddC)');
}
});
$('a[href*=catalogItem\\.asp\\?M]').each(function() {
url = $(this).attr('href').
replace(/catalogItem.asp\?M=/,'inventory_add.asp?a=m&itemID=').
replace(/colorID=/,'p_color=');
burl = $(this).attr('href').
replace(/.*M=/,'http://www.basebrick.com/minifigs.php?minifig=').
replace(/colorID=\d*/,'');
$(this).after(' (Add) (BB)');
});
$('a[href*=catalogitem\\.page\\?M]').each(function() {
url = $(this).attr('href').
replace(/v2\/catalog\/catalogitem.page\?M=/,'inventory_add.asp?a=m&itemID=').
replace(/colorID=/,'p_color=');
burl = $(this).attr('href').
replace(/.*M=/,'http://www.basebrick.com/minifigs.php?minifig=').
replace(/colorID=\d*/,'');
$(this).after(' (Add) (BB)');
});
$('img[src*="http://img.bricklink.com/P/"]').each(function() {
if(!$.getUrlVar('colorPart')) {
url = $(this).attr('src').
replace(/.*P\//,'').
replace(/\..*/,'').
replace(/^/,'inventory_add.asp?a=p&p_color=').
replace(/\//,'&itemID=');
$(this).parent().parent().after(' (AddC)');
}
});
}
// If inventory page, automatically trigger the price guide ajax pull
// also set a click rule on condition (new/used) to set it to the average value (new or used)
// also sets percentage to 10
// then focus to quantity
if(window.location.pathname.indexOf('inventory_add.asp')>0) {
// hide crap
$(document).ready(function() {
// function to set values
$('input:radio[name=invNew]').click(function() { quixblpriceguideavgset(); });
if($('select#p_color').val()>0 || $('#p_color').attr('type')=='Hidden') { // only query ajax if color set or if color hidden instead of selector (sets, minifigs)
ajaxGet('priceGuideSummary.asp?a='+$('*[name=itemType]').val()+'&vcID=1&vatInc=N&ajView=Y&colorID='+document.getElementById('p_color').value+'&itemID='+window.document.cascade.elements['p_selecteditemID'].value,function(arf) {setTimeout('quixblpriceguideavgset()',100); getPg(arf);},'Y',errPg);
// setTimeout('quixblpriceguideavgset()',1200);
}
// reload ajax when color changes
$('select#p_color').change(function() {
ajaxGet('priceGuideSummary.asp?a='+$('*[name=itemType]').val()+'&vcID=1&vatInc=N&ajView=Y&colorID='+document.getElementById('p_color').value+'&itemID='+window.document.cascade.elements['p_selecteditemID'].value,function(arf) {setTimeout('quixblpriceguideavgset()',100); getPg(arf);},'Y',errPg);
// setTimeout('quixblpriceguideavgset()',1200);
});
$('p:contains(If you select a Part)').hide();
$('p:contains(The remarks field is only vis)').hide();
$('p:contains(You can switch back to the radio button)').hide();
$('font:contains(Select this option if you want)').hide();
$('font:contains(If you select to reserve)').hide();
$('font:contains(optional):not(:contains(Remarks))').hide();
$('table[cellpadding=0]:contains(Reserved For):not(:contains(Retain))').hide();
$('tr:contains(Stockroom):not(:contains(Retain))').hide();
$('table[cellpadding=0]:contains(Bind to Super):not(:contains(Category))').hide();
$('font:contains(Edit My Default)').hide();
$('p:contains(Please make sure)').hide();
$('font:contains(Select a category)').hide();
$('p:contains(Custom Item)').hide();
$('table:contains(Step 1):not(:contains(Category:))').hide();
$('table:contains(Sell Item):not(:contains(Category:))').hide();
$('table:contains(Category:):not(:contains(Number:))').hide();
$('td:contains(View Image):not(:contains(Number:))').hide();
$('tr:contains(Tiered):not(:contains(Price))').hide();
$('tr:contains(Bulk):not(:contains(Quantity))').hide();
$('font:contains(Read our ):not(:contains(Extended))').hide();
$('td').filter(function() { return $(this).html() === ' '; }).hide();
$('textarea').attr('rows',1);
$('input[value="Reset Form"]').after(
' Show all stuff ');
$('input[name=invSale]').val(10);
$('input:radio[name=invNew]').focus(); // focus down the screen first, so we can focus up and get interesting stuff in the screen
if($('select#p_color').val()<1) { // no color set, try to set color first
setTimeout(function() {
$('select#p_color').focus();
$('select#p_color').select();
}, 200);
} else {
$('input[name=p_quantity]').focus();
}
});
}
if(window.location.pathname.indexOf('orderDetail.asp')>0 ) {
$('a[href*=catalogItemPic\\.asp\\?S]').each(function() {
burl = $(this).attr('href').
replace(/.*S=/,'http://www.basebrick.com/sets.php?s=');
$(this).after(' - BB');
});
$('a[href*=catalogItemPic\\.asp\\?P]').each(function() {
burl = $(this).attr('href').
replace(/.*P=/,'http://www.basebrick.com/parts.php?partnumber=').
replace(/colorID=\d*/,'');
burlu = $(this).attr('href').
replace(/.*P=/,'http://www.basebrick.com/listdata2.php?userid=1228&partnumber=').
replace(/colorID=\d*/,'');
$(this).after(' (BB) (BBu)');
});
$('a[href*=catalogItemPic\\.asp\\?M]').each(function() {
burl = $(this).attr('href').
replace(/.*M=/,'http://www.basebrick.com/minifigs.php?minifig=').
replace(/colorID=\d*/,'');
$(this).after(' (BB)');
});
}
if(window.location.pathname.indexOf('inventory_detail.asp')>0) {
// trigger percentage change
$('input[value="Submit Changes"]').after('');
// add clicky to add another of this type dialog
$('a[href*="catalogItem.asp\?P="]').each(function(){
part = $(this).attr('href').match(/P=(\d+)/);
if(part) {
$(this).after(' (Add)');
}
});
}
if(window.location.pathname.indexOf('invSetEdit.asp')>0) {
// trigger percentage change
$('input[value="Verify Items"]').after('');
}
if(window.location.pathname.indexOf('inventory_verify.asp')>0) {
$('input[value="Add to Inventory"]').focus();
}