Avanza fiddler

Some Avanza site tweaks to ease the trading day

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

You will need to install an extension such as Tampermonkey to install this 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           Avanza fiddler
// @name:sv        Avanza fix o trix
// @description	   Some Avanza site tweaks to ease the trading day
// @description:sv Lite Avanza site uppdateringar för att underlätta trading dagen
// @author         pegr69
// @include        https://www.avanza.se/*
// @version        0.9.1
// @namespace      https://greasyfork.org/users/593500
// @copyright      2020, Peter Grape
// @license        CDDL-1.0
// @run-at         document-end
// @grant          none

// ==/UserScript==

window.addEventListener("load", init, false);
window.addEventListener("keydown", keytrap, true);

function keytrap (e) {

   // let prevButton = document.getElementsByClassName('fa fa-angle-left')[0];
   // let nextButton = document.getElementsByClassName('fa fa-angle-right')[0];

    try {
     //  let isFirstPage = prevButton.parentElement.parentElement.className == "disabled";
     //  let isLastPage = nextButton.parentElement.parentElement.className == "disabled";

    if (window.name === "orderWindow") {
        // console.info("Avanza Orderwindow");
        if (e.keyCode == 37) { // Left arrow press
           console.log("Adding shares count...");
        }
        else if (e.keyCode == 39) { // Right arrow press
            console.log("Deleting shares count...");
        }
    }
    }
    catch(error) {
        // No navigation present.
    }

}

// Adds a simple external tweak to the Avanza links.
// Minor fixes for order window

function init()
{
  console.info("Init Avanza Fiddler, version 0.9.1");
  // Tweak all links to external target.
  tweaklinks(document);
  // Fix order window
  fixordervindow(document);
}

// Resize and remove unnecessary crap
function fixordervindow(doc)
{
    if (window.name === "orderWindow") {
        console.info("Avanza Orderwindow");
        window.resizeTo(858,774);
        let azaheader=doc.getElementsByTagName("aza-header")[0];
        let azamenu=doc.getElementsByTagName("aza-menu")[0];
        let azapmenu=doc.getElementsByTagName("aza-personal-menu")[0];
        let azafooter=doc.getElementsByTagName("aza-footer")[0];

        azaheader.style.display="none";
        azamenu.style.display="none";
        azapmenu.style.display="none";
        azafooter.style.display="none";
    }
}

// Add an external target to all valid title links

function tweaklinks(doc)
{
    // Do not touch these link titles
  let ignoreTitles=["Lägg till","Ta Bort"];
  let mapfixedlinks = [
      { href: 'https://www.avanza.se/hall-koll/min-borsskarm.html', name: 'borsskarm' },
      { href: 'https://www.avanza.se/min-ekonomi/oversikt.html', name: 'oversikt' },
      { href: 'https://www.avanza.se/hem/senaste.html', name: 'senaste' },
      { href: 'https://www.avanza.se/min-profil/installningar.html', name: 'installningar' }
  ];
    // find all links, add external attribute if not set.
  for (let a,i=0; a=doc.getElementsByTagName("a")[i]; ++i) {
    if (a.target === "") {
      if (a.title === "") {
          // console.log("AH:" + a.href);

          let ml = mapfixedlinks.find(function(element) {
              return a.href == element.href;
          });

          if ( ml != null ){
              a.target = ml.name;
              }

      }else {
          let ignore = false;
          ignoreTitles.forEach(function(value){
              let t = a.title.search(value);
              if (t != -1) {
                  console.info("Ignoring:" + value + " for title:" + a.title);
                  ignore = true;
              }
           });
          if ( ! ignore ) {
              a.target = a.title;
          }
      }
    }
  }
}