Namespace: marginalCalc

marginalCalc

Detta är hjärtat i kalkylatorn, här laddar du och kör dina uträkningar.
Source:

Members

.config.url :String

Namnet på mappen för dina moduler.
Type:
  • String
Default Value:
  • modules/
Source:

.config.url :String

Url för scriptloader, ändra denna om du tex vill en annan url för dina filer.
Type:
  • String
Source:

(static) modules :Array.<Module>

Array med alla moduler registrerade av marginalCalc.addModule
Type:
Source:

Methods

(static) addModule(moduleName, module, priorityopt) → {marginalCalc}

Registrerar modulen för att kunna bli kallad av kalkylatorn. Den känner även av om modulen har en totalCalc funktion som kan köras senare för att räkna ihop summan av samtliga moduler.
Parameters:
Name Type Attributes Default Description
moduleName String name of the Module, referenced function parameters
module Module The module function
priority Number <optional>
100 Defines in what order the priority the module shall be calculated.
Source:
Returns:
Den returnerar sig själv för att kunna kedja anrop.
Type
marginalCalc
Example
var nyaModulen = function() {
             this.totalCalc = function() {
                 return -200;
             }
         }
marginalCalc.addModule("Nymodul", nyaModulen, 200)
            .addModule("Modul2",
                        function() {
                         this.totalCalc = function() {
                             return 500;
                         }
                        },201);

marginalCalc.totalCalc() //-> 300

(static) marginalEff(increment, newVal, oldVal, notInverted) → {Number}

Räknar ut kvoten av förändringen.
Parameters:
Name Type Description
increment Ökningen av att mäta marginaleffekten på
newVal Det nya värdet
oldVal Det tidigare värdet
notInverted inverterar resultatet, 0.75 blir 0.25
Source:
Returns:
Type
Number
Example
// Räkna ut marginaleffekter på hyreshöjning med 100 kr från 0 - 7000.
household.getHouse().setRent(0); // sätt hyran på noll

var hyreshojning = 100;
var oldval = marginalCalc.totalCalc(); // ta reda på hur mkt man får från början i bidrag.

// Börja mäta förändringar
     for(var i = 1; i < 7000 / increment; i++){

         household.getHouse().setRent(i * hyreshojning); //100 kr -> 7000 kr
         var newVal = marginalCalc.totalCalc(); // få resultat av ex bostadsbidrag och socialbidrag
         console.log(marginalCalc.marginalEff(hyreshojning, newVal, oldVal)) // få marginaleffekten
         oldVal = newVal // spara den nuvarande summan för att jämföra med loop.
      }

(static) run(fn)

Denna metod sparar den medskickade funktionen och väntar på att scriptloadern ska ge grönt ljus. Denna metod hittar automatiskt vilka moduler funktionen vill ha tillgång till genom att scanna alla argument till funktionen, argumenten ska heta samma sak som man angivit som moduleName till marginalCalc.addModule. Den initierar automatiskt de moduler som funktionen är beroende av. Den initerar även modulernas beroenden. När den initerat klart anropar den först funktionen och därefter metoden ready() på funktionen om den är definierad. Det kan vara så att man inte behöver lägga sin kod i ready() då alla moduler bör vara laddade vid körning.
Parameters:
Name Type Description
fn function Funktionen som ska köras
Source:
Example
marginalCalc.run(function(socialBidrag){
     var soc = socialBidrag.totalCalc(); //-> ger socialbidraget;
     this.ready = function(){
         var readySoc = socialBidrag.totalCalc()
         console.log(readySoc === soc); //-> true
     }
});

.scriptLoader.addScripts(modules)

Laddar in javascript filer för användning i marginalCalc
Parameters:
Name Type Description
modules Array An array of filenames to load from the modules folder
Source:
Example
marginalCalc.scriptLoader.addScripts(["socialbidrag", "bostadsbidrag"])
// -> laddar /modules/socialbidrag.js och /modules/bostadsbidrag.js

.scriptLoader.loadComplete(file)

Denna funktion bör anropas av varje fil som ska laddas av addScripts. Om inte detta görs så kör kommer kalkylatorn inte börja initiera modulerna.
Parameters:
Name Type Description
file String Name of the file that has loaded
Source:
Example
// /modules/mina_nya_moduler.js
var nyaModulen = function() {
     this.totalCalc = function() {
         return -200;
     }
}
marginalCalc.addModule("NyModul", nyaModulen);
marginalCalc.scriptLoader.loadComplete("mina_nya_moduler");

(static) totalCalc(returnArropt) → {Number|Array}

Kör metoden Module.totalCalc på varenda registrerad modul som har den metoden, den kör metoden i den prioritet som man definierade när man registrerade modulen. Antingen får man tillbaka en array med resultatet per modul, eller totalsumman.
Parameters:
Name Type Attributes Default Description
returnArr Boolean <optional>
false False returnerar summan, true returnerar en array med separerade resultat per modul.
Source:
Returns:
Total sum of modules.
Type
Number | Array