Greasy Fork is available in English.

KlavoDaily ProgressBar

Прогресс бар для ежедневного задания

// ==UserScript==
// @name        KlavoDaily ProgressBar
// @namespace   ru.ilpihp
// @description Прогресс бар для ежедневного задания
// @author Darwinian
// @version     1
// @grant       none
// @include        http://klavogonki.ru*
// ==/UserScript==
(function (window, undefined) {  // [2] нормализуем window
    var w;
    if (typeof unsafeWindow != undefined) {
        w = unsafeWindow
    } else {
        w = window;
    }
    // В юзерскрипты можно вставлять практически любые javascript-библиотеки.
    // Код библиотеки копируется прямо в юзерскрипт.
    // При подключении библиотеки нужно передать w в качестве параметра окна window
    // Пример: подключение jquery.min.js
    // (function(a,b){function ci(a) ... a.jQuery=a.$=d})(w);

    // [3] не запускаем скрипт во фреймах
    // без этого условия скрипт будет запускаться несколько раз на странице с фреймами
    if (w.self != w.top) {
        return;
    }
    // [4] дополнительная проверка наряду с @include
    if (/http:\/\/klavogonki\.ru/.test(w.location.href)) {
        //Ниже идёт непосредственно код скрипта
      var oldReal;
      
      function readProgress(){
        return $$(".user-dropdown .daily-task")[0].readAttribute('original-title');
      };
      
      function setIconStyle() {
        $$(".user-dropdown .daily-task img.icon")[0].setStyle('width: 30px;height: 30px;margin-left: 6px;');
      };
      
      function displayProgressBar(real, goal) {
        var pb = $('daily-progress-bar');
        if (!pb) {
          var htmlToInsert = "<div id='daily-progress-bar' style='margin-top: 30px;font-size: 10px;text-align: center;position: absolute;width: 100%;'>"+real+"/"+goal+"</div>";
          $$(".user-dropdown .daily-task")[0].insert(htmlToInsert);
        } else {
          pb.innerText = real+"/"+goal;
        }
      };
      
      function showProgressBar(progressString) {
        var numbers = progressString.split(" ")[1];
        var real = numbers.split("/")[0];
        var goal = numbers.split("/")[1];
        
        if (oldReal != real) {
          if (!oldReal) {
            setIconStyle();
          }
          displayProgressBar(real, goal);
          oldReal = real;
        }
        
      };
      
      var progressString;
      function waitProgress() {
        progressString = readProgress();
        
        if (progressString) {
          showProgressBar(progressString);
        }
        setTimeout(waitProgress, 1000);
      };
      
      waitProgress();
      
    }
})(window);