UnitsWV_0: Parties communes

Contenu du snippet

Bonjour,

J'espère que vous avez eu la curiosité de parcourir quelques pages du logiciel UnitsWV.

Vous aurez remarqué que vous avez la possibilité de cliquer dans toutes les "zones blanches" pour y choisir un élément ou une option.

Voici d'abord quelques annotations en ce qui concerne les parties communes, c'est-à-dire les trois listes qui se trouvent à droite des pages.

Partie commune: Base

Initialement, la base choisi correspond à la base SI (Système international d'unités):
Φ: rad   activé, neutralisé (=1)
Ω: sr   activé, neutralisé (=1)
L: m   activé
M: kg   activé
T: s   activé
I: A   activé
I: A   activé
N: mol   activé
J: cd   activé
C: ¤   désactivé.

Mais on peut activer et/ou neutraliser librement chacun des couples (grandeur: unité) de base.

Par exemple, pour traiter "la mécanique", on activera (seulement ou au moins):
   Φ: rad, L: m, M: kg, T: s.

De plus, Φ: rad peut être neutralisé (SI): Φ = 𝟙, rad = 1
   (où 𝟙 est l'élément neutre du groupe des dimensions, voir prochains articles).

Code (dans WV.js) correspondant à la partie commune Base:
var bas; // Bits, bas&n != 0: nième (grandeur: unité) active.
var eq1; // Bits, eq1&n != 0: nième (grandeur: unité) neutralisée (=1).

function SetBas(b,e) { // Affiche la base sélectionnée
  var i=0,m=1,s='',z='';
  bas=b; eq1=e;
  for (i=0;i<nbB;i++,m<<=1) {
    s+="<p class="+(((bas&m)!=0)?'pS':'pN')+" onclick='Bas("+i+")'>"
      +B.d[i]+": "+B.s[i]+"</p>";
    z+="<p class="+(((eq1&m)!=0)?'eq':'eN')+" onclick='Eq1("+i+")'>= 1</p>";
  }
  document.getElementById('Bb').innerHTML=s;
  document.getElementById('B1').innerHTML=z;
}
function Bas(n) { // active ou désactive un couple (grandeur: unité) de base
  var m=1<<n;
  if ((bas&m)!=0) {bas^=m; eq1&=~m;} else {bas|=m;}
  SetBas(bas,eq1); B.Lng(B.sel); D.Lst(D.cln); // Mise à jour
  Q.Lst(Q.cln); U.Lst(U.cln); C.Lst(C.cln);
}
function Eq1(n) { // neutralise ou déneutralise un couple (grandeur: unité) de base
  var m=1<<n;
  if ((eq1&m)!=0) {eq1^=m;} else {eq1|=m; bas|=m;}
  SetBas(bas,eq1); D.Lst(D.cln); Q.Upd(); C.Upd(); // Mise à jour
}


Partie commune: Familles

Les unités simples sont réparties sur une ou plusieurs familles d'unités qui peuvent être activées séparément.

Code (dans WV.js) correspondant à la partie commune Familles:
var fml=127; // ensemble de "bits", fml&n != 0: nième famille sélectionnée.

function Fam(o,n) { // Active ou désactive une famille d'unités
  var m=1<<n;
  if ((fml&m)!=0) {fml^=m; o.className='pN';} else {fml|=m; o.className='pS';}
  C.Lst(C.cln); D.Upd(); Q.Upd(); U.Lst(U.cln); // Mise à jour
}


Il est bien sûr prévu de définir d'autres familles telles que "unités anciennes", "unités locales" selon un pays ou une région, etc.

Partie commune: Langues

Si la langue du navigateur correspond à l'une des langues traitées, le programme l'utilise initialement; sinon l'anglais.

Le changement de langue peut se faire dans n'importe quelle situation et se répercute instantanément dans toutes les pages.
Les listes basées sur des noms sont alors (re)triées.

Les textes pas encore traduits sont écrits en anglais précédés de ¹.

Code (dans Lang.js) correspondant à la partie commune Langues:
//// Lang.js: Langues
function Lng() {}
Lng.mes=new Array(0); // messages dans les langues présentes
Lng.sel=0; // Index (dans Lng.mes) de la langue choisie

Lng.Navi=function() { // Index la langue du navigateur
  var i,nav=(navigator.userLanguage)?navigator.userLanguage:navigator.language;
  for (i=0;i<Lng.mes.length;i++) if (nav.indexOf(Lng.mes[i][0])>=0) return i;
  return 0; // si pas trouvé
};
Lng.Auto=function(doc,m) { // changements 'automatiques'
  var e,k,n,s,t=doc.getElementsByTagName('*');
  for (k=0;k<t.length;k++) if (s=(e=t[k]).id) {
    if ((n=s.indexOf('_i'))>=0) e.innerHTML=m[parseInt(s.substr(n+2))];
    if ((n=s.indexOf('_v'))>=0) e.value=m[parseInt(s.substr(n+2))];
    if ((n=s.indexOf('_t'))>=0) e.title=m[parseInt(s.substr(n+2))];
  }
};
Lng.Vert=function(iTxt,iTit) { // innerHTML de sélection verticale
  for (i=0,s='';i<Lng.mes.length;i++) s+="<p class="+((i==Lng.sel)?'pS':'pN')+
    " style='cursor:pointer' onclick='Chn("+i+")' title='"+Lng.mes[i][iTit]+
    "'>"+Lng.mes[i][iTxt]+"</p>";
  return s;
};

function Chn(idx) { // changement de langue
  var m=Lng.mes[Lng.sel=idx];
  Lng.Auto(document,m); // changements 'automatiques'
  document.getElementById('LL').innerHTML=Lng.Vert(1,0);
  B.Lng(B.sel); D.Lng(); Q.Lng(); U.Lng(); C.Lng(); K.Lng(); // Mise à jour
}


Cet article est sous forme de snippet car le code n'a pas changé,
il correspond au Zip du premier lien ci-dessous.


Bonne lecture et agréable utilisation …

Liens

CodeS-SourceS: UnitsWV: Dimensions, grandeurs et unités (SI*)
Brochure sur le SI: Le Système international d'unités
SI Brochure: The International System of Units (SI)
Vocabulaire international de métrologie
Métrologie française: Les unités de mesure
METAS: Unités de mesure
Wikipédia: Unité de mesure
WikipédiA: Système international d'unités
WikipediA: International System of Units
WikipediA: Internationales Einheitensystem
NIST: International System of Units
NIST: The International System of Units (SI) pdf

Compatibilité : 24 mai 2018

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.