From 150bc554a97c8f88fefb63d9d70975ffde59dfc2 Mon Sep 17 00:00:00 2001 From: Peter Bjerg Mogensen Date: Sun, 11 Oct 2020 15:28:19 +0200 Subject: [PATCH] - Generalized gems total calculation into a single reusable function - Added field specific on change handlers for repeating secitons for weapon and non weapon profs and gear carried and stored - Fixed wrong mouse over title on birthright gem repeating name --- AD&D 2E Revised/2ESheet.html | 134 +++++++---------------------------- 1 file changed, 27 insertions(+), 107 deletions(-) diff --git a/AD&D 2E Revised/2ESheet.html b/AD&D 2E Revised/2ESheet.html index f858cc6c3b..129fedf487 100644 --- a/AD&D 2E Revised/2ESheet.html +++ b/AD&D 2E Revised/2ESheet.html @@ -9377,10 +9377,10 @@
- - - - + + + +

Total GP value from gems:



@@ -18234,7 +18234,7 @@ newPriestSections.forEach(section => { }); //Weapon proficiency slots -on('change:repeating_weaponprofs remove:repeating_weaponprofs change:weapprofnum', function(){ +on('change:repeating_weaponprofs:weapprofnum remove:repeating_weaponprofs change:weapprofnum', function(){ TAS.repeating('weaponprofs') .attrs('weapprofslotssum','weapprofnum') @@ -18251,7 +18251,7 @@ on('change:repeating_weaponprofs remove:repeating_weaponprofs change:weapprofnum }); //Nonweapon proficiency slots -on('change:repeating_profs remove:repeating_profs change:profslots', function(){ +on('change:repeating_profs:profslots remove:repeating_profs change:profslots', function(){ TAS.repeating('profs') .attrs('profslotssum','profslots') @@ -18268,7 +18268,7 @@ on('change:repeating_profs remove:repeating_profs change:profslots', function(){ }); //Equipment Carried Section -on('change:repeating_gear remove:repeating_gear change:gearweight change:gearqty', function(){ +on('change:repeating_gear:gearweight change:repeating_gear:gearqty remove:repeating_gear change:gearweight change:gearqty', function(){ TAS.repeating('gear') .attrs('gearweighttotal','gearqty','gearweight') @@ -18286,7 +18286,7 @@ on('change:repeating_gear remove:repeating_gear change:gearweight change:gearqty //Equipment Stored Section //Mount Equipment Carried Section Continued -on('change:repeating_gear-stored remove:repeating_gear-stored change:on-mount change:gear-stored-weight change:gear-stored-qty', function(){ +on('change:repeating_gear-stored:gear-stored-weight change:repeating_gear-stored:gear-stored-qty change:repeating_gear-stored:on-mount remove:repeating_gear-stored change:on-mount change:gear-stored-weight change:gear-stored-qty', function(){ TAS.repeating('gear-stored') .attrs('mount-gear-weight-total','stored-gear-weight-total','on-mount','gear-stored-weight','gear-stored-qty') @@ -18305,106 +18305,26 @@ on('change:repeating_gear-stored remove:repeating_gear-stored change:on-mount ch .execute(); }) -//Standard Currency -on('change:repeating_gem remove:repeating_gem change:gemvalue change:gemqty', function(){ - - TAS.repeating('gem') - .attrs('gemstotalvalue','gemvalue','gemqty') - .fields('gemvalue','gemqty') - .reduce(function(m,r){ - m.gemvalue+=(r.F.gemvalue*r.I.gemqty); - return m; - - },{gemvalue:0, desc: []},function(m,r,a){ - m.gemvalue+=(a.F.gemvalue*a.I.gemqty); - a.gemstotalvalue=m.gemvalue; - }) - .execute(); -}); +function setupCalculateTotalGems(totalField, valueField, multiplierField, repeatingSection) { + let onChange = `change:${valueField} change:${multiplierField} change:${repeatingSection}:${valueField} change:${repeatingSection}:${multiplierField} remove:${repeatingSection}` + on(onChange, function(){ + TAS.repeating(repeatingSection) + .attrs(totalField, valueField, multiplierField) + .fields(valueField, multiplierField) + .reduce(function(m,r){ + m.total+=(r.F[valueField]*r.I[multiplierField]); + return m; + },{total:0},function(m,r,a){ + m.total+=(a.F[valueField]*a.I[multiplierField]); + a[totalField]=m.total; + }) + .execute(); + }); +} -//Dragonlance Currency -on('change:repeating_gem2 remove:repeating_gem2 change:gemvalue2 change:gemqty2', function(){ - - TAS.repeating('gem2') - .attrs('gemstotalvalue2','gemvalue2','gemqty2') - .fields('gemvalue2','gemqty2') - .reduce(function(m,r){ - m.gemvalue2+=(r.F.gemvalue2*r.I.gemqty2); - return m; - - },{gemvalue2:0, desc: []},function(m,r,a){ - m.gemvalue2+=(a.F.gemvalue2*a.I.gemqty2); - a.gemstotalvalue2=m.gemvalue2; - }) - .execute(); -}); - -//Dark Sun Currency -on('change:repeating_gem3 remove:repeating_gem3 change:gemvalue3 change:gemqty3', function(){ - - TAS.repeating('gem3') - .attrs('gemstotalvalue3','gemvalue3','gemqty3') - .fields('gemvalue3','gemqty3') - .reduce(function(m,r){ - m.gemvalue3+=(r.F.gemvalue3*r.I.gemqty3); - return m; - - },{gemvalue3:0, desc: []},function(m,r,a){ - m.gemvalue3+=(a.F.gemvalue3*a.I.gemqty3); - a.gemstotalvalue3=m.gemvalue3; - }) - .execute(); -}); - -//Ravenloft Currency -on('change:repeating_gem4 remove:repeating_gem4 change:gemvalue4 change:gemqty4', function(){ - - TAS.repeating('gem4') - .attrs('gemstotalvalue4','gemvalue4','gemqty4') - .fields('gemvalue4','gemqty4') - .reduce(function(m,r){ - m.gemvalue4+=(r.F.gemvalue4*r.I.gemqty4); - return m; - - },{gemvalue4:0, desc: []},function(m,r,a){ - m.gemvalue4+=(a.F.gemvalue4*a.I.gemqty4); - a.gemstotalvalue4=m.gemvalue4; - }) - .execute(); -}); - -//Maztica Currency -on('change:repeating_gem5 remove:repeating_gem5 change:gemvalue5 change:gemqty5', function(){ - - TAS.repeating('gem5') - .attrs('gemstotalvalue5','gemvalue5','gemqty5') - .fields('gemvalue5','gemqty5') - .reduce(function(m,r){ - m.gemvalue5+=(r.F.gemvalue5*r.I.gemqty5); - return m; - - },{gemvalue5:0, desc: []},function(m,r,a){ - m.gemvalue5+=(a.F.gemvalue5*a.I.gemqty5); - a.gemstotalvalue5=m.gemvalue5; - }) - .execute(); -}); - -//Birthright Currency -on('change:repeating_gem6 remove:repeating_gem6 change:gemvalue6 change:gemqty6', function(){ - - TAS.repeating('gem6') - .attrs('gemstotalvalue6','gemvalue6','gemqty6') - .fields('gemvalue6','gemqty6') - .reduce(function(m,r){ - m.gemvalue6+=(r.F.gemvalue6*r.I.gemqty6); - return m; - - },{gemvalue6:0, desc: []},function(m,r,a){ - m.gemvalue6+=(a.F.gemvalue6*a.I.gemqty6); - a.gemstotalvalue6=m.gemvalue6; - }) - .execute(); +let gemSections = ['', '1', '2', '3', '4', '5', '6']; +gemSections.forEach(i => { + setupCalculateTotalGems(`gemstotalvalue${i}`, `gemvalue${i}`, `gemqty${i}`, `gem${i}`); }); var sheetName = 'AD&D 2E Revised';