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:
- Array.<Module>
- 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