SGW Menu Filterer & General Helper

Adds simple filters to menus on shopgoodwill

Versión del día 3/1/2018. Echa un vistazo a la versión más reciente.

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name        SGW Menu Filterer & General Helper
// @namespace   greatest.deepsurf.us
// @version     1.7.1.3
// @grant       none
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// @include     https://sellers.shopgoodwill.com/*
// @include     http://*shopgoodwill.com*
// @exclude     https://sellers.shopgoodwill.com/sellers/newAuctionItem-catsel.asp*
// @exclude     https://sellers.shopgoodwill.com/sellers/fileUpload/*

// @description Adds simple filters to menus on shopgoodwill
// ==/UserScript==
this.$ = window.jQuery.noConflict(true);
var url = document.URL;


if ($('a:contains("View")').length >= 1 && url.toLowerCase().indexOf('customer_service') >= 0) {
  $('a:contains("View")').each(function(){
    $(this).parent().find('input').each(function(){
      if($(this).val().indexOf('View')>=0) {
        $(this).hide();
      }
    });
    
  })
}



jQuery.fn.filterByText = function(textbox, selectSingleMatch) {
  return this.each(function() {
    var select = this;
    var options = [];
    $(select).find('option').each(function() {
      options.push({value: $(this).val(), text: $(this).text()});
    });
    $(select).data('options', options);
    $(textbox).bind('change keyup', function() {
      var options = $(select).empty().scrollTop(0).data('options');
      var search = $.trim($(this).val());
      var regex = new RegExp(search,'gi');
 
      $.each(options, function(i) {
        var option = options[i];
        if(option.text.match(regex) !== null) {
          $(select).append(
             $('<option>').text(option.text).val(option.value)
          );
        }
      });
      if (selectSingleMatch === true && 
          $(select).children().length === 1) {
        $(select).children().get(0).selected = true;
      }
    });
  });
};

$('.line-clamp').removeClass('line-clamp');

skipNames = [
  "sortBy",
];
skipIDs = [
  "Month",
  "Day",
  "Year",
  "assignee",
  "CatSellerLogin",
  "relist",
  "duration",
  "time",
];

var selectCount = 0;
$('select').each(function(){
  myNewBox = selectCount + "Box";
  myName = $(this).attr('name');
  if ($(this).not('[id]')) {
    $(this).attr('id', myName);
  }
  var skip = 0;
  $.each(skipNames, function(i, name){
    if (myName.indexOf(name) >= 0) {
      skip++;
    }
  });
  myID = this.id;
  if ($('#' + myID + ' option').length <= 5) {
    skip++;
  } else {
    $.each(skipIDs, function(i, ID){
      if (myID.indexOf(ID) >= 0) {
        skip++;
      }
    });
  }
  if (skip < 1) {
    $(this).before("<div id='" + myNewBox + "C' class='boxContainer'><input id='" + myNewBox + "' type='text' class='filterBox'><span id='" + myNewBox + "T' class='boxText'style='opacity:.75; position: relative; left:-100px; top:-1px; font-size:12px; font-weight: normal;'>(filter)</span></div>");
    $(this).filterByText($('#' + myNewBox), true);
  }
  selectCount++;
});

$('.filterBox').each(function(){
  myID = this.id;
  $(this).css({
    "transform" : "scale(.85,.85)",
    "-ms-transform" : "scale(.85,.85)",
    "-webkit-transform" : "scale(.85,.85)",
    "background-color" : "#F3F3F3",
    "position" : "relative",
    "left" : "-10px",
  });

});

$('.filterBox').click(function(){
  myID = this.id;
  $('#' + myID + 'T').remove();
});

$('.boxText').click(function(){
    myID = this.id.slice(0, -1);
    $(this).remove();
    $('#' + myID).focus();
  });


$('.boxContainer, .boxText').css({
  "margin" : "0px"
});

// Color gallery posts to make them stand out

if ($('font:contains("Gallery Image")').length > 0) {
  $('font:contains("Details for")').after(" <span style='font-size:22px; font-weight: bold;'>(GALLERY)</span>");
  $('font:contains("Details for"), font:contains("Tools")').parent().css({'vertical-align' : 'center', 'background-color' : '#11aaff'});
}

// Ditto recycled posts

if ($('td:contains("Recycled: Yes")').length > 0) {
  
  if ($('a:contains("related items")').length > 0) {
    $('font:contains("Details for")').after(" <span style='font-size:22px; font-weight: bold;'>(RELISTED)</span>");
    $('font:contains("Details for"), font:contains("Tools")').parent().css({'vertical-align' : 'center', 'background-color' : '#ccccdd'});
    $('body').css('background-color', '#eeeeff');
  } else {
    $('font:contains("Details for")').after(" <span style='font-size:22px; font-weight: bold;'>(RECYCLED)</span>");
    $('font:contains("Details for"), font:contains("Tools")').parent().css({'vertical-align' : 'center', 'background-color' : '#ccc'});
    $('body').css('background-color', '#eee');
  }
}
if ($('td:contains("Re-list count:")').not(':contains("count: 0")').length > 0) {
  $('font:contains("Details for"), font:contains("Tools")').parent().css({'vertical-align' : 'center'});
  $('a[href*="viewItem.asp"]').first().after(" <span style='font-size:22px; font-weight: bold;'>(Relist)</span>");
  $('body').css('background-color', '#fff2e0');
}

// Parse shipping calculator tags (new style)

if ($('td:contains("{{")').length > 0) {
  $('td:contains("{{")').last().each(function(){
    var myText = $(this).text();
    if (myText.indexOf("=>") >= 0) {
      var myTests = {
        'type' : /.*(gen|guit|art|long|flex|clth|s&l|media|smFlt|medFlt|pickup|OR|---).*/g,
        'weight' : /\[(\d+\.?\d?)\]/g,
        'plusPounds' : /# \(\+(\d+)\)/g,
        'dims' : /\[([\d\.]+x.*)\]/g,
        'plusInches' : /"\(\+(\d+)\)/g,
        'shipWeight' : /=>(\d+)#/g,
        'shipCharge' : /=>\$(\d?\.*\d*)/g,
        'specialOptions' : /(ownBox|noGlassFront|btwCbd)/g,
        'check' : /check:(.*)}}/g
      }
      
      var myBits = {};
      $.each(myTests, function(testName, thisTest) {
        var newTest = new RegExp(thisTest);
        if (newTest.test(myText) === true) {
          myBits[testName] = thisTest.exec(myText)[1];
        }
      });
//      console.dir(myBits);
      
      var calcTypes = {
        'gen' : 'General',
        'guit' : 'Guitar',
        'art' : 'Art',
        'long' : 'Long',
        'flex' : 'Flexible',
        'clth' : 'Clothing',
        's&l' : 'Small and light',
        'media' : 'Media',
        'smFlt' : 'Small flat-rate',
        'medFlt' : 'Medium flat-rate',
        'pickup' : 'Pickup only',
        'OR' : 'Override',
        '---' : 'Not calculated',
      }
      
      var myString = "Calculated as: " + calcTypes[myBits['type']];
      var myLength = Object.keys(myBits).length;
     
      if (myLength > 1) {
        if (isDefined(myBits['weight'])) {
          myString += '\n';
          myString+= 'Weight: ' + myBits['weight'];
          if (isDefined(myBits['plusPounds'])) {
            myString += ' +' + myBits['plusPounds'];
          }
          myString += ' lbs.';
        }
        if (isDefined(myBits['dims'])) {
          myString += '\n';
          myString+= 'Dimensions: ' + myBits['dims'];
          if (isDefined(myBits['plusInches'])) {
            myString += ' +' + myBits['plusInches']; // TODO: Is it worth writing in what the inches would be?
          }
          myString += "\"";
        }
        if (isDefined(myBits['shipWeight'])) {
          myString += '\n';
          myString+= 'Calculated shipping weight: ' + myBits['shipWeight'];
        }
        if (isDefined(myBits['shipCharge'])) {
          myString += '\n';
          myString+= 'Calculated shipping charge: ' + myBits['shipCharge'];
        }
        if (isDefined(myBits['specialOptions'])) {
          myString += '\n';
          var mySpecialOptions = {
            'ownBox' : 'Ship in item\'s own box',
            'noGlassFront' : 'Item does not have a glass/plexiglass/etc. front',
            'btwCbd' : 'Item should be shipped between cardboard',
          }
          myString+= mySpecialOptions[myBits['specialOptions']];
        }
        if (isDefined(myBits['check'])) {
          myString += '\n';
          myString+= 'Shippability checked by: ' + myBits['check'];
        }
      }
      $('td:contains("{{")').last().attr('title', myString);
//      $('td:contains("{{")').last().append("<b>&nbsp;&nbsp;&nbsp;&lsaquo;&lsaquo;&telrec;&rsaquo;&rsaquo;</b>");
      $('td:contains("{{")').last()[0].innerHTML = "<table id='ges_tagTable'><tr><td>" +  $('td:contains("{{")').last()[0].innerHTML + "</td><td style='padding-left:10px; font-size: 30px;'>&lsaquo;&telrec;&rsaquo;</td></tr></table>";
    }
  });
  
}

if (url.indexOf('seller_central.asp') > 0) {
  $('#generate_packing_slips').after('<button id="fixSlips">Fix Packing Slips</button>');
  $('#fixSlips').bind('click', function(e){
    e.preventDefault();
    $('strong > br').replaceWith(' ');
    $('p:contains("Thank you for shopping!")').html('<strong>Thank you for shopping with Goodwill/Easter Seals Minnesota!</strong>');
    $('#form1').hide();
    $('table').first().remove();
    $('table:contains("Welcome")').first().remove();
    $('table:contains("Orders Found")').first().remove();
    $('font:contains("Shipping Pack Slips")').hide();
    var today = new Date();
    var todaysDate = (today.getMonth()+1) + '/' + today.getDate() + '/' + today.getFullYear();
    $('td:contains("Ending")').each(function(){
//      $(this).css('background-color', '#f00');
      var dateRe = new RegExp(/\d+\/\d+\/\d+/, 'g');
      var matches = $(this).html().match(dateRe);
//      console.dir(matches);
      $(this).html('<div style="padding: 3px;">Posted: ' + matches[0] + '</div>'
         + '<div style="padding: 3px;">Ended: '+ matches[1] + '</div>'
         + '<div style="padding: 3px;">Paid: '+ matches[2] + '</div>'
         + '<div style="padding: 3px;">Printed: '+ todaysDate + '</div>'
      )
    });
  });
  $('#print_page').remove();
} else if (url.indexOf('newAuctionItem-catsel.asp') >= 0) {
  
} else if (url.indexOf('seller_login_add.asp') >=0) {
  $('input[name="loginpasswd"]').replaceWith('<input name="loginpasswd" size="20" maxlength="20" type="password">');
} else if (url.indexOf('sellers/tools/search.asp') >= 0 || url.indexOf('search/default.asp') >= 0) {
  var urlParams = parse_query_string(url);
  var myLink = $('font:contains("Status") > a');
  var baseURL = $('font:contains("Status") > a').attr('href');
  
  $.each(urlParams, function(index, value){
    $('input[name="'+index+'"]').val(value);
  });
  myLink.attr('href', baseURL + setupParams());
  
  
  function setupParams() {
    var urlString = '';
    $('input:visible, select:visible').each(function(){
      var myVal = $(this).val();
      if (myVal.length > 0) {
        var myName = $(this).prop('name');
        urlString+= "&"+myName+"="+myVal;
      }
    });
    console.log(urlString);
    return urlString;
  }
  
  $('input').bind('keyup', function(){
    var urlString = setupParams();
    console.log(urlString);
    myLink.attr('href', baseURL + urlString);
  });
}


function parse_query_string(query) {
  var vars = query.split("&");
  var query_string = {};
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split("=");
    // If first entry with this name
    if (typeof query_string[pair[0]] === "undefined") {
      query_string[pair[0]] = decodeURIComponent(pair[1]);
      // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];
      query_string[pair[0]] = arr;
      // If third or later entry with this name
    } else {
      query_string[pair[0]].push(decodeURIComponent(pair[1]));
    }
  }
  return query_string;
}



/*
if ($('#txtmsg').length > 0) {
  $('#txtmsg').before("<div id='txtmsgDiv' contenteditable='true' style='width:600px; height: 300px; border: 1px solid #ccc;'></div>");
  $('#txtmsgDiv').bind("keyup", function(){
     $('#txtmsg').val($('#txtmsgDiv').html());
    console.log('a');
  });
  $('#btnPasteTemple').bind("click", function(){
    function nl2br (str, is_xhtml) {   
        var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';    
        return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
    }
    var myTimeout = window.setTimeout(function(){
      $('#txtmsgDiv').html(nl2br($('#txtmsg').val()));
    }, 200);
  });
  $('#txtmsg').hide();
}
*/

function isDefined(something) {
  if (typeof something == 'undefined') {
    return false;
  } else if (something === null) {
    return false;
  } else if (something.length < 1) {
    return false;
  }
  
  return true;
}