1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
   | const preTab= [ { ref: 'montant_immo_1',    id:'planmontant_1_',   fct: gTest_a,  def:0.00, isTest:true }
              , { ref: 'taux_immo_1',       id:'plantaux_1_',      fct: gInt      }
              , { ref: 'duree_immo_1',      id:'planduree_1_',     fct: calc_12e  }
              , { ref: 'dureediff_immo_1',  id:'plandureediff_1_', fct: calc_12e  }
              , { ref: 'chxdiff_immo_1',    id:'planchxdiff_1_',   fct: calc_12e  }
              , { ref: 'ass_immo_1_calc',   id:'plancalcass_1_',   fct: gNRadios  }
              , { ref: 'ass_immo_1_taux',   id:'planasstaux_1_',   fct: gTxt      }
              , { ref: 'ass_immo_1_taux_c', id:'planasstauxc_1_',  fct: gTxt      }
              , { ref: 'ass_immo_1_qte',    id:'planassqte_1_',    fct: calc_100e }
              , { ref: 'ass_immo_1_qte_c',  id:'planassqtec_1_',   fct: calc_100e }
              ]
 
function gTest_a( id, simul, def, test )
{
  let el = document.getElementsByName(id+simul)
  test.ok = (el && el.value != '0.00')
  return test.ok ? parseInt(el.value ) : def
}
 
function gTxt      ( id, simul ) { return document.getElementById(id+simul).value; }
function gInt      ( id, simul ) { return parseInt(document.getElementById(id+simul).value); }
function calc_12e  ( id, simul )
{
  let v = parseInt(document.getElementById(id+simul).value);
  return (v>1) ? v/12 : v;
}
function calc_100e ( id, simul )
{
  let v = parseInt(document.getElementById(id+simul).value);
  return (v!=0) ? v/100 : 0;
}
function gNRadios  ( id, simul )
{
  let El_Rs = document.getElementsByName(id+simul)
    , Rval  = null
    ;
  for(let i=0;i<El_Rs.length;i++)
  {
    if (El_Rs[i].checked) 
    {
      Rval = El_Rs[i].value;
      break;
    }
  }
  return Rval;
}
 
function CalculM1( simul )
{
  let inV     = { } 
    , run     = { ok: true }
    , Lissage = { montant_a : 0
                , montant_b : 0
                // ...
                , montant_z : 0
                }
 
  for (let prepa of preTab)
  {
    if ( prepa.isTest )
    {
      inV[prepa.ref] = prepa.fct( prepa.id, simul, prepa.def, run )
    }
    else
    {
      if ( run.ok ) inV[prepa.ref] = prepa.fct( prepa.id, simul )
    }
  }
 
  if ( inV.montant_immo_1 > 0 )
  {
    Lissage.montant_a = inV.montant_immo_1 * inV.taux_immo_1 / inV.duree_immo_1
  }
  // etc ...
 
  // tu peux aussi créer une table d'inférences pour faire ces calculs
 
 
  GraphLissage( Lissage )  // appel mutli arguments = tous les élements de l'objet Lissage
} 
 
 
CalculM1('4')
 
 
function GraphLissage( objArg )
{
  // objArg.montant_a ... objArg.montant_z
} | 
Partager