Rohlik.cz - mnozstvi zbozi na sklade

Přidá pole s množstvím zboží na skladě.

// ==UserScript==
// @name            Rohlik.cz - mnozstvi zbozi na sklade
// @description:cs  Přidá pole s množstvím zboží na skladě.
// @namespace       monnef.tk
// @include         https://www.rohlik.cz/*
// @version         1
// @grant           GM_addStyle
// @require         https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js
// @run-at          document-start
// @description Přidá pole s množstvím zboží na skladě.
// ==/UserScript==

var $ = jQuery.noConflict(true);
var FORM_PATTY = /^frm-product-\d+-basketForm$/;
var STORE_ATTR = 'data-max-amount';
var CRAWL_TAG = 'monnef_store_amount_tag';
var LOG_TAG = '[RczMZnS]'

function log(msg) {
  console.log(LOG_TAG + ' ' + msg);
}

function process(elem) {
  elem = $(elem);
  $('form', elem)
    .filter(function () {
      var formElem = $(this);
      return !formElem.data(CRAWL_TAG) && FORM_PATTY.test($(this).attr('id'));
    })
    .each(function () {
      var formElem = $(this);
      $('input', formElem).each(function () {
        var inputElem = $(this);
        var storeAmount = inputElem.attr(STORE_ATTR);
        if (storeAmount) {
          formElem.data(CRAWL_TAG, true);
          var storeCountElem = $('<div/>')
            .addClass('monnef-store-amount')
            .text(storeAmount)
            .attr('title', 'Skladem je ' + storeAmount + ' kusů.' + '\nSkript vám vytvořil monnef.');
          formElem.append(storeCountElem);
        }
      })
    })
  ;
}

log('Skript "Rohlik.cz - mnozstvi zbozi na sklade" od monnef startuje')

document.addEventListener('DOMSubtreeModified', function (ev) {
  setTimeout(function () { process(ev.target); }, 50);
}, false);

GM_addStyle(`
.monnef-store-amount {
  position: absolute;
  bottom: -0.7em;
  left: 3.4em;
  padding: 0.1em;
  background: #fafafa;
  border: 1px solid #eee;
  border-radius: 0.3em;
  width: 2em;
  text-align: center;
  cursor: default;
}
`);