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
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.