Greasy Fork is available in English.

seasons by ctsigma

shows cultures that will appear next month on unit list

// ==UserScript==
// @name        seasons by ctsigma
// @namespace   virtonomica
// @include     https://*virtonomic*.*/*/main/company/view/*/unit_list
// @description shows cultures that will appear next month on unit list
// @version     1.04
// @grant       none
// ==/UserScript==
var run = function () {
  var win = (typeof (unsafeWindow) != 'undefined' ? unsafeWindow : top.window);
  $ = win.$;
  var agro = $('<img style="cursor:pointer;vertical-align:middle;" width="32" src="/img/artefact/icons/color/agriculture.gif" title="сезонность">').click(function () {seasons()});
//  $('table.unit-top tr:eq(1)>td:eq(1)').prepend(agro);  //конфликтовало
  $('img[src="/img/icon/unit_build.png"]').parents('td').prepend(agro);
  
  function seasons() {
    var realm = readCookie('last_realm');
    const week = 604800000; // неделя в ms
    var srv_date = $('.date_time').text().trim();
    var months = {'янв':0,'фев':1,'мар':2,'апр':3,'май':4,'мая':4,'июн':5,'июл':6,'авг':7,'сен':8,'окт':9,'ноя':10,'дек':11};
    var yy = (/([0-9]+)\s([^0-9\s]+)\s([0-9]+)/.exec(srv_date)) [3];
    var mm = months[(/([0-9]+)\s([^0-9\s]+)\s([0-9]+)/.exec(srv_date)) [2].substr(0, 3)];
    var dd = (/([0-9]+)\s([^0-9\s]+)\s([0-9]+)/.exec(srv_date)) [1];
    var srvDate = new Date(yy, mm, dd);
    $('.unit-list-2014>tbody td[class^=info]').each(function () {
      UnitType = $(this).prop('class');
      if (UnitType == 'info i-farm' || UnitType == 'info i-orchard') {
        var id = $(this).parent().find($('.unit_id')).text();
        if (id == '') return;
        var url = '/%realm%/window/unit/produce_change/%id%'.replace('%realm%', realm).replace('%id%', id);
        var prod = '';
        $.ajax({
          type: 'GET',
          url: url,
          success: function (data) {
            $('.list tr[class]', data).each(function () {
              var season = months[$(this).find('>td:eq(4)').find('[title*=", уборка урожая"]:eq(0)').attr('title').replace(', уборка урожая', '').toLowerCase().substr(0, 3)];
              var yyy = parseInt(yy);
              if (season < mm) {
                yyy = 1 + yyy
              }
              var ssnDate = new Date(yyy, season, '01');
              var weeks = Math.ceil((ssnDate - srvDate) / week);
//              console.log(weeks);
              if (weeks < 6) {
                prod = prod + $(this).find('>td:eq(3) a').html().replace(RegExp('/img/products/24/', 'g'), '/img/products/16/') + '(' + weeks + ')</img>';
              }
            });
          },
          async: false
        });
        var b = $(prod);
        b.each(function () {
          b.attr('align', '');
        })
        $(this).parent().find('.alerts').prepend(b);
      }
    }) //each function
  }
}
if (window.top == window) {
  var script = document.createElement('script');
  script.textContent = '(' + run.toString() + ')();';
  document.documentElement.appendChild(script);
}