Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name richard.kolisek
- // @version 1.8
- // @description utility
- // @grant none
- // @require http://code.jquery.com/jquery-1.10.2.min.js
- // @include http://www.meliorannis.com/*
- // ==/UserScript==
- var searchHoursInPast;
- var percentColors = [
- { pct: 0.0, color: { r: 0xff, g: 0x00, b: 0 } },
- { pct: 0.5, color: { r: 168, g: 168, b: 168 } },
- { pct: 1.0, color: { r: 0x00, g: 0xff, b: 0 } } ];
- var percentToColor = function(pct)
- {
- for (var i = 0; i < percentColors.length; i++)
- {
- if (pct <= percentColors[i].pct)
- {
- var lower = (i === 0) ? percentColors[i] : percentColors[i - 1];
- var upper = (i === 0) ? percentColors[i + 1] : percentColors[i];
- var range = upper.pct - lower.pct;
- var rangePct = (pct - lower.pct) / range;
- var pctLower = 1 - rangePct;
- var pctUpper = rangePct;
- var color =
- {
- r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
- g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
- b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
- };
- return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
- }
- }
- };
- function getLastDbValue(id, property)
- {
- var dbValues = localStorage[id];
- if (dbValues)
- {
- dbValues = JSON.parse(dbValues);
- dbValues.reverse();
- for (var i in dbValues) {
- var hourDifference = Math.abs(new Date() - new Date(dbValues[i].date)) / 36e5;
- if (searchHoursInPast && hourDifference > searchHoursInPast)
- {
- if (dbValues[i][property])
- return dbValues[i][property];
- }
- else if (!searchHoursInPast)
- {
- if (dbValues[i][property])
- return dbValues[i][property];
- }
- }
- }
- return -1;
- }
- function renderChangesValue(id, power, area, powerPos, areaPos, row, ot, otPos)
- {
- var powerDb = getLastDbValue(id, 'power');
- var areaDb = getLastDbValue(id, 'area');
- var otDb = getLastDbValue(id, 'ot');
- var columns = $(row).children();
- var powerColumn = $(columns[powerPos]);
- powerColumn.append(renrerValue(id, 'power', power, powerDb==-1 ? power : powerDb, true));
- var dlg = document.getElementById(id + '-power-dialog');
- $('#' + id + '-power').click(function() {
- dlg.style.display = 'block';
- });
- $('#' + id + '-power-dialog').click(function() {
- dlg.style.display = "none";
- });
- if(areaPos)
- {
- var areaColumn = $(columns[areaPos]);
- areaColumn.append(renrerValue(id, 'area', area, areaDb==-1 ? area : areaDb, false));
- }
- if (otPos)
- {
- var otPlus = Number(ot) - Number(otDb);
- if (otPlus && otPlus > 0)
- {
- var otColumn = $(columns[otPos]);
- otColumn.append('(<span class="to-remove" style="color: rgb(0, 255, 0);">+' + otPlus + '</span>)');
- }
- }
- }
- function renrerValue(id, type, value, valueDb, isPercent)
- {
- var percent = Math.round(percent * 10) / 10;
- percent = (value / (valueDb / 100) - 100).toFixed(1) + '%';
- var val = (Math.round((value - valueDb) / 100) / 10) + 'k';
- var element = '<font size="2" class="to-remove">(<span id="' + id + '-' + type + '" class="' + type +'">' + (isPercent ? percent : val) + '</span>)';
- var dialog =
- '<div id="' + id + '-' + type + '-dialog" class="' + type + '-dialog to-remove" style="display: none; position: fixed; z-index: 1;left: 0;top: 0;width: 100%;height: 100%;overflow: auto;background-color: rgb(0,0,0);background-color: rgba(0,0,0,0.4);">' +
- '<div style="background-color: #fefefe;margin: 15% auto;padding: 20px;border: 1px solid #888;width: 30%;">' +
- '<table border="1" style="width:100%;"><tr style="text-align: left;"><td>Čas</td><td>Síla</td><td>Rozloha</td><td>O.T</td></tr>';
- var storage = localStorage[id];
- if (storage) {
- var data = JSON.parse(storage);
- data.reverse();
- for (var i in data) {
- dialog = dialog + '<tr style="text-align: left;"><td>' + formatDate(data[i].date) +
- '</td><td>' + data[i].power + '</td><td>' + data[i].area + '</td><td>' + data[i].ot + '</td></tr>';
- }
- }
- dialog = dialog + '</table></div></dialog>';
- return element + dialog;
- }
- function formatDate(date)
- {
- var d = new Date(date);
- return [d.getDate(), (d.getMonth()+1)].join('.') + ' ' +
- [ d.getHours(), d.getMinutes()].join(':');
- }
- function spies()
- {
- var table = $('#spies_report');
- if (table)
- {
- var id = table.find('sup').text().replace('(', '').replace(')', '');
- var powerColumn = table.find('td:contains("Síla provincie")').next();
- var power = powerColumn.text();
- var powerMine = $('#LS_power_value').text();
- var powerDb = getLastDbValue(id, 'power');
- powerColumn.append(renrerValue(id, 'power', power, powerDb==-1 ? power : powerDb));
- powerColumn.append('<a id="adjustArmy">Pripravit armadu na utok</a>');
- $('#adjustArmy').click(
- function() {
- localStorage.powerDiff = ((Number(powerMine) / 100) * 80) - Number(power);
- window.location.href = $( "a:contains('Armáda')" ).attr('href');
- });
- }
- $('#calculator_wrapper_bottom').append('<label>Nazev jednotky stitu</label>');
- $('#calculator_wrapper_bottom').append('<input type="text" id="shieldUnit" />');
- $('#calculator_wrapper_bottom').append('<label>Sila 1 jednotky stitu</label>');
- $('#calculator_wrapper_bottom').append('<input type="text" id="shieldUnitPower" />');
- $('#shieldUnit').val(localStorage.shieldUnit ? localStorage.shieldUnit : '');
- $('#shieldUnit').on("change keyup paste", function() { localStorage.shieldUnit = $('#shieldUnit').val();});
- $('#shieldUnitPower').val(localStorage.shieldUnitPower ? localStorage.shieldUnitPower : '');
- $('#shieldUnitPower').on("change keyup paste", function() { localStorage.shieldUnitPower = $('#shieldUnitPower').val();});
- if (localStorage.powerDiff && localStorage.powerDiff !== '' && localStorage.shieldUnit && localStorage.shieldUnitPower)
- {
- if (localStorage.powerDiff < 0)
- {
- var value = $($('select')[1]).find('option:contains(' + localStorage.shieldUnit + ')').val();
- $($('select')[1]).val(value);
- $($('input[name="kolik"]')[1]).val(Math.abs(Math.round(localStorage.powerDiff / localStorage.shieldUnitPower)));
- }
- else
- {
- var value = $($('select')[0]).find('option:contains(' + localStorage.shieldUnit + ')').val();
- $($('select')[0]).val(value);
- $($('input[name="kolik"]')[0]).val(Math.abs(Math.round(localStorage.powerDiff / localStorage.shieldUnitPower)));
- }
- localStorage.powerDiff = '';
- }
- }
- function main()
- {
- var tables = $('table:contains("Síla"):contains("ID")');
- $.each(
- tables,
- function (i, table)
- {
- var rows = $(table).find('tr');
- var headRow = rows.filter(
- function(index, row)
- {
- return $(row).find('td:contains("ID")').length==1;
- }
- );
- var idPos;
- var powerPos;
- var areaPos;
- var otPos;
- var headColumns = $(headRow).find('td');
- $.each(headColumns,
- function (index, value)
- {
- var text = $(value).text().trim();
- console.log('head text: -' + text + '-');
- if(text==='ID')
- idPos = index;
- if(text.indexOf("Síla")===0)
- powerPos = index;
- if(text==='Rozloha' || text === 'hAR')
- areaPos = index;
- if(text==='O.T.')
- otPos = index;
- if (text === 'Titul')
- $('td:nth-child(' + (index + 1) + ')').hide();
- }
- );
- console.log('powerPos: ' + powerPos);
- console.log('areaPos: ' + areaPos);
- console.log('otPos: ' + otPos);
- $.each(rows,
- function (index, value)
- {
- if (index > 0) // skip header row
- {
- var columns = $(value).children();
- var id = $(columns[idPos]).children("span").clone().children().remove().end().text().trim();
- var power = $(columns[powerPos]).text().split('*').join('').trim();
- var area;
- var ot;
- if(areaPos)
- area = $(columns[areaPos]).text().trim();
- if(otPos)
- ot = $(columns[otPos]).text().trim();
- renderChangesValue(id, power, area, powerPos, areaPos, value, ot, otPos);
- if(!isNaN(parseFloat(id)))
- {
- var data = localStorage[id];
- var array = [];
- var lastDbValPower = getLastDbValue(id, 'power');
- var lastDbValOt = getLastDbValue(id, 'ot');
- var lastDbValArea = getLastDbValue(id, 'area');
- var dataChanged = true;
- if (lastDbValPower || lastDbValOt)
- dataChanged = (power && power !== lastDbValPower) || (ot && ot !== lastDbValOt) || (area && area !== lastDbValArea);
- if(data)
- array= JSON.parse(data);
- if (dataChanged && power)
- {
- array.push({"power" : power, "area" : area, "date" : Date(), "ot": ot});
- localStorage[id] = JSON.stringify(array);
- }
- }
- }
- }
- );
- }
- );
- colorPercentages('.power');
- colorPercentages('.area');
- }
- function colorPercentages(selector)
- {
- var percentElements = $(selector);
- var percentValues = $.map(
- percentElements,
- function(value)
- {
- return $(value).text().replace('k','').replace('%', '');
- }
- );
- var percentMax = Math.max.apply(Math, percentValues);
- var percentMin = Math.min.apply(Math, percentValues);
- percentMax = percentMax === 0 ? 1 : percentMax;
- percentMin = percentMin === 0 ? 1 : percentMin;
- $.each(
- percentElements,
- function(index, value)
- {
- var currentValue = $(value).text().replace('k','').replace('%', '');
- var relativePercent = 0;
- if(currentValue >= 0)
- {
- relativePercent = 50 + (Math.abs(currentValue) / (Math.abs(percentMax) / 50));
- }
- else
- {
- relativePercent = 50 - (Math.abs(currentValue) / (Math.abs(percentMin) / 50));
- }
- $(value).css('color', percentToColor(relativePercent / 100));
- }
- );
- }
- function renderHistoryTextField()
- {
- var tables = $('table:contains("Síla"):contains("ID")');
- $.each(
- tables,
- function (i, table)
- {
- $(table).after("<label>Pocet hodin do zadu</label><input id='hour-field' type='text'/>");
- });
- $('#hour-field').change(function() {
- searchHoursInPast = Number($( this ).val().trim());
- $( ".to-remove" ).remove();
- main();
- });
- }
- function kokotMeasure()
- {
- if (!localStorage['kokotMeasure'])
- localStorage['kokotMeasure'] = 0;
- localStorage['kokotMeasure'] = Number(localStorage['kokotMeasure']) + 1;
- $('body').append('<label style="position: absolute; left: 0; top: 0;">Jak velky jsi kokot: ' + localStorage['kokotMeasure'] + '</div>');
- }
- function myPower()
- {
- var power = $('#LS_power_value').text();
- var powerDb = Number(localStorage.me);
- var powerDifference = (power - powerDb);
- if (powerDifference)
- {
- $('#LS_power_value').append('<span id="powerId" style="padding-left: 5px;">' + powerDifference + '</span>');
- if (powerDifference < 0)
- {
- $('#powerId').css('color', 'RGB(255, 0, 0)');
- }
- else
- {
- $('#powerId').css('color', 'RGB(0, 255, 0)');
- }
- }
- localStorage.me = power;
- }
- function renderShieldStackPerc()
- {
- var shieldPwrElem = $('#econ_units_list').find('tr.tr_even:first > td:nth-child(6)');
- var shieldPwr = Number(shieldPwrElem.text());
- var totalPwr = Number($('#econ_units_list').find('.tr_econ_summary > td:nth-child(3)').text());
- if (shieldPwr && totalPwr)
- {
- var shieldPerc = (100 * shieldPwr) / totalPwr;
- shieldPwrElem.append(' (<span style="color: RGB(0, 255, 0);">' + shieldPerc.toFixed(1) + '%</span>)');
- }
- }
- function renderNotes()
- {
- $('#calculator_wrapper_bottom').append('<textarea rows="4" cols="50" id="notes"></textarea>');
- $('#notes').val(localStorage.notes ? localStorage.notes : '');
- $('#notes').on("change keyup paste", function() {
- localStorage.notes = $('#notes').val();
- });
- }
- function getPlayer() {
- return $('#player_detail').find('.governor').text().trim();
- }
- var apiKey = 'axde8wuFzZUNAeK1UMqaovDhD49TCa5X';
- var database = 'https://api.mlab.com/api/1/databases/ma/';
- var csColl = database + "collections/cs?apiKey=" + apiKey;
- // make ajax get to load all cs from DB and pass it to callback
- // usage: getAllCs(function(data) {...})
- function getAllCs(callback) {
- $.get(csColl, callback);
- }
- // remove all player cs
- function removePlayerCs(player, successCallback) {
- $.ajax({url: csColl + '&q={"player":"' + player + '"}',
- data: JSON.stringify([]),
- type: "PUT",
- contentType: "application/json",
- success: successCallback});
- }
- // insert given cs to database
- function insertPlayerCs(player, id, regent, aliance, time, power, pass, protection, result) {
- var cs = {
- "id": id,
- "regent": regent,
- "aliance": aliance,
- "time": time,
- "power": power,
- "pass": pass,
- "protection": protection,
- "result": result,
- "player": player,
- "lastUpdate": new Date()
- };
- $.ajax({url: csColl,
- data: JSON.stringify(cs),
- type: "POST",
- contentType: "application/json" });
- }
- function updateAllCs() {
- var player = getPlayer();
- var csRows = $('div.attacks_list_wrapper:contains(Bráněné útoky)').find('.attacks_table > tbody > tr[class!="heading"]:contains(nevráceno)');
- if (csRows.length) {
- removePlayerCs(player, function() {
- $.each(csRows, function (i, csRow) {
- var id = $(csRow).find('td.attacks_id').text().split(" ")[0].trim();
- var regent = $(csRow).find('td.attacks_regent').text().trim();
- var aliance = $(csRow).find('td.attacks_aliance').text().trim();
- var time = $(csRow).find('td.attacks_time').text().split(" ")[0].trim().replace('(', '').replace(')', '');
- var power = $(csRow).find('td.attacks_pwr').text().split("(")[0].trim();
- var pass = $(csRow).find('td.attacks_pass').text().trim();
- var protection = $(csRow).find('td.attacks_attack').text().indexOf("*") != -1;
- var attacker = $(csRow).find('td.attacks_attacker').text().trim();
- var defender = $(csRow).find('td.attacks_defender').text().trim();
- var result = attacker + " : " + defender;
- insertPlayerCs(player, id, regent, aliance, time, power, pass, protection, result);
- });
- });
- }
- }
- function renderCs() {
- function groupCsByPlayer(csArray) {
- var csByPlayer = {};
- for (var i = 0; i < csArray.length; i++) {
- if (!csByPlayer[csArray[i].player])
- csByPlayer[csArray[i].player] = [];
- csByPlayer[csArray[i].player].push(csArray[i]);
- }
- return csByPlayer;
- }
- function getPlayerCsTable(player, cs) {
- var tableStart =
- '<div class="attacks_list_wrapper">' +
- '<div class="attacks_wrapper">' +
- '<div class="attacks_type_wrapper">' + player + '</div>' +
- '<table class="attacks_table"><tbody>' +
- '<tr class="heading">' +
- '<td class="attacks_id">ID</td>' +
- '<td class="attacks_regent">Regent</td>' +
- '<td class="attacks_aliance">Aliance</td>' +
- '<td class="attacks_time">Doba od útoku</td>' +
- '<td class="attacks_pwr">Síla</td>' +
- '<td class="attacks_pass">Status útoku</td>' +
- '<td class="attacks_protection"></td>' +
- '<td class="attacks_result">Ztráty útočník : obránce</td>' +
- '</tr>';
- for (var i = 0; i < cs.length; i++) {
- tableStart = tableStart +
- '<tr>' +
- '<td class="attacks_id">' + cs[i].id + '</td>' +
- '<td class="attacks_regent">' + cs[i].regent + '</td>' +
- '<td class="attacks_aliance">' + cs[i].aliance + '</td>' +
- '<td class="attacks_time">' + cs[i].time + '</td>' +
- '<td class="attacks_pwr">' + cs[i].power + '</td>' +
- '<td class="attacks_pass">' + cs[i].pass + '</td>' +
- '<td class="attacks_protection">' + (cs[i].protection ? '*' : '') + '</td>' +
- '<td class="attacks_result">' + cs[i].result + '</td>' +
- '</tr>';
- }
- var tableEnd = '</tbody></table></div></div>';
- return tableStart + tableEnd;
- }
- var csLink = $('#Attacks_list_detail a').attr("href").replace("vypis=utoky_detailne", "cs");
- $('#Attacks_list_detail').after('<li id="csLink"><a href="' + csLink + '">Cska</a></li>');
- if (window.location.href.indexOf("cs") != -1) {
- $('#central_column_bottom').empty();
- getAllCs(function(data) {
- var csByPlayer = groupCsByPlayer(data);
- for (var player in csByPlayer) {
- if (csByPlayer.hasOwnProperty(player)) {
- $('#central_column_bottom').append(getPlayerCsTable(player, csByPlayer[player]));
- }
- }
- });
- }
- }
- renderNotes();
- renderCs();
- renderShieldStackPerc();
- myPower();
- kokotMeasure();
- renderHistoryTextField();
- main();
- spies();
- updateAllCs();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement